plug={[]} remove=false rotorpos=[0,0,0,0] rotors=[0,0,0] def plugboard(plug1, plug2,[remove]) if not plug1 in plug and not plug2 in plug and not remove: plug[plug1]=plug2 plug[plug2]=plug1 elseif remove: plug[plug1]=plug1 plug[plug2]=plug2 remove=false end end def rotation(): rotorpos[0]=rotorpos[0]+1 for i in range(2): if rotors[i]==1 and rotorpos[i]==19: rotorpos[i+1]=rotorpos[i+1]+1 elif rotors[i]==2 and rotorpos[i]==6: rotorpos[i+1]=rotorpos[i+1]+1 elif rotors[i]==3 and rotorpos[i]==25: rotorpos[i+1]=rotorpos[i+1]+1 elif rotors[i]==4 and rotorpos[i]==16: rotorpos[i+1]=rotorpos[i+1]+1 elif rotors[i]==5 and rotorpos[i]==11: rotorpos[i+1]=rotorpos[i+1]+1 end if rotorpos[i]>26: rotorpos[i]=1 end end end def typemessage() inp=input(["Insert plaintext here: "]) line=list(inp) while line.count(" ")>0: line.remove(" ") end length=len(line)-1 end plaintext=getInput() def setmachine(rotone, rottwo, rotthree, rotposone, rotpostwo, rotposthree) if rotone!=rottwo and rotone!=rotthree and rottwo!=rotthree: rotors=[rotone, rottwo, rotthree] end rotorpos=[rotposone, rotpostwo, rotposthree,0] end def rotorone(char): if char==1: return 3 elif char==2: return 23 elif char==3: return 6 elif char==4: return 7 elif char==5: return 11 elif char==6: return 13 elif char==7: return 24 elif char==8: return 12 elif char==9: return 9 elif char==10: return 21 elif char==11 return 14 elif char==12: return 1 elif char==13: return 4 elif char==14: return15 elif char==15: return 8 elif char==16: return 25 elif char==17: return 16 elif char==18: return 5 elif char==19: return 19 elif char==20: return 20 elif char==21: return 26 elif char==22: return 22 elif char==23: return 18 elif char==24: return 17 elif char==25: return 10 elif char==26: return 2 end def rotortwo(): if char==1: return 8 elif char==2: return 17 elif char==3: return 11 elif char==4: return 26 elif char==5: return 6 elif char==6: return 20 elif char==7: return 18 elif char==8: return 24 elif char==9: return 25 elif char==10: return 1 elif char==11 return 16 elif char==12: return 14 elif char==13: return 21 elif char==14: return 23 elif char==15: return 3 elif char==16: return 5 elif char==17: return 15 elif char==18: return 13 elif char==19: return 22 elif char==20: return 4 elif char==21: return 19 elif char==22: return 7 elif char==23: return 12 elif char==24: return 9 elif char==25: return 10 elif char==26: return 2 end def rotorthree(): if char==1: return 26 elif char==2: return 1 elif char==3: return 21 elif char==4: return 8 elif char==5: return 5 elif char==6: return 13 elif char==7: return 22 elif char==8: return 17 elif char==9: return 7 elif char==10: return 15 elif char==11 return 24 elif char==12: return 2 elif char==13: return 14 elif char==14: return 16 elif char==15: return 11 elif char==16: return 23 elif char==17: return 10 elif char==18: return 12 elif char==19: return 3 elif char==20: return 18 elif char==21: return 20 elif char==22: return 9 elif char==23: return 25 elif char==24: return 4 elif char==25: return 19 elif char==26: return 6 end def rotorfour(): if char==1: return 12 elif char==2: return 6 elif char==3: return 23 elif char==4: return 3 elif char==5: return 10 elif char==6: return 19 elif char==7: return 13 elif char==8: return 26 elif char==9: return 24 elif char==10: return 20 elif char==11 return 22 elif char==12: return 18 elif char==13: return 8 elif char==14: return 11 elif char==15: return 9 elif char==16: return 1 elif char==17: return 21 elif char==18: return 4 elif char==19: return 15 elif char==20: return 14 elif char==21: return 25 elif char==22: return 17 elif char==23: return 5 elif char==24: return 2 elif char==25: return 16 elif char==26: return 7 end def rotorfive(): if char==1: return 20 elif char==2: return 15 elif char==3: return 14 elif char==4: return 4 elif char==5: return 1 elif char==6: return 9 elif char==7: return 12 elif char==8: return 11 elif char==9: return 5 elif char==10: return 19 elif char==11 return 26 elif char==12: return 7 elif char==13: return 23 elif char==14: return 2 elif char==15: return 13 elif char==16: return 18 elif char==17: return 25 elif char==18: return 21 elif char==19: return 6 elif char==20: return 3 elif char==21: return 8 elif char==22: return 22 elif char==23: return 17 elif char==24: return 24 elif char==25: return 10 elif char==26: return 16 end def reflector(char) if char==1: return 5 elif char==2: return 11 elif char==3: return 13 elif char==4: return 6 elif char==5: return 12 elif char==6: return 7 elif char==7: return 4 elif char==8: return 17 elif char==9: return 22 elif char==10: return 26 elif char==11 return 14 elif char==12: return 20 elif char==13: return 15 elif char==14: return 23 elif char==15: return 25 elif char==16: return 8 elif char==17: return 24 elif char==18: return 21 elif char==19: return 19 elif char==20: return 16 elif char==21: return 1 elif char==22: return 9 elif char==23: return 2 elif char==24: return 18 elif char==25: return 3 elif char==26: return 10 def rotor(rotor): if rotor==1: return rotorone(char) elif rotor==2: return rotortwo(char) elif rotor==3: return rotorthree(char) elif rotor==4: return rotorfour(char) elif rotor==5: return rotorfive(char) elif rotor==(-1): return revrotorone(char) elif rotor==(-2): return revrotortwo(char) elif rotor==(-3): return revrotorthree(char) elif rotor==(-4): return revrotorfour(char) elif rotor==(-5): return revrotorfive(char) end end def enigma(): line=typemessage() for i=0,length: rotation() char=line[i] char=rotor(rotors[0]) char=rotor(rotors[1]) char=rotor(rotors[2]) char=reflector() char=rotor(-(rotors[2])) char=rotor(-(rotors[1])) char=rotor(-(rotors[0])) line[i]=char end end
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question