EnigmAndroid/app/src/main/java/de/vanitasvitae/enigmandroid/enigma/Enigma_G312.java

67 lines
2.3 KiB
Java
Raw Normal View History

package de.vanitasvitae.enigmandroid.enigma;
2015-10-04 22:51:35 +02:00
import java.math.BigInteger;
import de.vanitasvitae.enigmandroid.enigma.rotors.EntryWheel;
import de.vanitasvitae.enigmandroid.enigma.rotors.Reflector;
import de.vanitasvitae.enigmandroid.enigma.rotors.Rotor;
2015-10-01 00:39:17 +02:00
/**
2015-10-04 22:51:35 +02:00
* Implementation of the Enigma machine of name G31 (Abwehr)
* Copyright (C) 2015 Paul Schaub
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
* @author vanitasvitae
*/
public class Enigma_G312 extends Enigma_G31
{
public Enigma_G312()
{
2015-10-04 22:51:35 +02:00
super();
machineType = "G312";
}
2015-10-04 22:51:35 +02:00
@Override
protected void establishAvailableParts()
{
addAvailableEntryWheel(new EntryWheel.EntryWheel_QWERTZ());
addAvailableRotor(new Rotor.Rotor_G312_I(0, 0));
addAvailableRotor(new Rotor.Rotor_G312_II(0, 0));
addAvailableRotor(new Rotor.Rotor_G312_III(0, 0));
addAvailableReflector(new Reflector.Reflector_G312());
}
@Override
public String stateToString()
{
2015-10-04 22:51:35 +02:00
BigInteger s = BigInteger.valueOf(reflector.getRingSetting());
s = addDigit(s, reflector.getRotation(), 26);
s = addDigit(s, rotor3.getRingSetting(), 26);
s = addDigit(s, rotor3.getRotation(), 26);
s = addDigit(s, rotor2.getRingSetting(), 26);
s = addDigit(s, rotor2.getRotation(), 26);
s = addDigit(s, rotor1.getRingSetting(), 26);
s = addDigit(s, rotor1.getRotation(), 26);
2015-10-04 22:51:35 +02:00
s = addDigit(s, rotor3.getIndex(), availableRotors.size());
s = addDigit(s, rotor2.getIndex(), availableRotors.size());
s = addDigit(s, rotor1.getIndex(), availableRotors.size());
2015-10-01 00:39:17 +02:00
s = addDigit(s, 4, 20); //Machine #4
2015-10-04 22:51:35 +02:00
return s.toString(16);
}
}