# START = 0, S1-5 = 1-5, EXIT = 6, BOOM = 7
rules = { '0w' : 1 , '0r' : 2 , '1o' : 3 , '1w' : 2 , '2r' : 0 , '2b' : 3 , '3b' : 3 , '3o' : 4 , '3g' : 5 , '4g' : 6 , '5o' : 6 }
def defuse( order) :
wires = list ( order)
i = 0
state = 0
try :
while i < len ( wires) :
state = rules[ str ( state) + wires[ i] ]
i += 1
except KeyError :
return 7
return state
def isboomornot( input , state) :
if state == 7 :
print ( str .format ( "the sequence {0} caused an explosion ({1})" , input , state) )
elif state == 6 :
print ( str .format ( "the sequence {0} disarmed the bomb ({1})" , input , state) )
else :
print ( str .format ( "the sequence {0} is not finished yet ({1})" , input , state) )
input1 = "wwrwobbgo"
input2 = "wwgog"
input3 = "wwrrrwwbgo"
input4 = "wbbbbgo"
input5 = "bgg"
input6 = "rrwobg"
isboomornot( input1, defuse( input1) )
isboomornot( input2, defuse( input2) )
isboomornot( input3, defuse( input3) )
isboomornot( input4, defuse( input4) )
isboomornot( input5, defuse( input5) )
isboomornot( input6, defuse( input6) )
IyBTVEFSVCA9IDAsIFMxLTUgPSAxLTUsIEVYSVQgPSA2LCBCT09NID0gNwpydWxlcyA9IHsgJzB3JzogMSwgJzByJzogMiwgJzFvJzogMywgJzF3JzogMiwgJzJyJzogMCwgJzJiJzogMywgJzNiJzogMywgJzNvJzogNCwgJzNnJzogNSwgJzRnJzogNiwgJzVvJzogNiB9CgpkZWYgZGVmdXNlKG9yZGVyKToKICAgIHdpcmVzID0gbGlzdChvcmRlcikKICAgIGkgPSAwCiAgICBzdGF0ZSA9IDAKICAgIHRyeToKICAgICAgICB3aGlsZSBpIDwgbGVuKHdpcmVzKToKICAgICAgICAgICAgc3RhdGUgPSBydWxlc1tzdHIoc3RhdGUpICsgd2lyZXNbaV1dCiAgICAgICAgICAgIGkgKz0gMQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHJldHVybiA3CiAgICByZXR1cm4gc3RhdGUKCmRlZiBpc2Jvb21vcm5vdChpbnB1dCwgc3RhdGUpOgogICAgaWYgc3RhdGUgPT0gNzoKICAgICAgICBwcmludChzdHIuZm9ybWF0KCJ0aGUgc2VxdWVuY2UgezB9IGNhdXNlZCBhbiBleHBsb3Npb24gKHsxfSkiLCBpbnB1dCwgc3RhdGUpKQogICAgZWxpZiBzdGF0ZSA9PSA2OgogICAgICAgIHByaW50KHN0ci5mb3JtYXQoInRoZSBzZXF1ZW5jZSB7MH0gZGlzYXJtZWQgdGhlIGJvbWIgKHsxfSkiLCBpbnB1dCwgc3RhdGUpKQogICAgZWxzZToKICAgICAgICBwcmludChzdHIuZm9ybWF0KCJ0aGUgc2VxdWVuY2UgezB9IGlzIG5vdCBmaW5pc2hlZCB5ZXQgKHsxfSkiLCBpbnB1dCwgc3RhdGUpKQoKaW5wdXQxID0gInd3cndvYmJnbyIKaW5wdXQyID0gInd3Z29nIgppbnB1dDMgPSAid3dycnJ3d2JnbyIKaW5wdXQ0ID0gIndiYmJiZ28iCmlucHV0NSA9ICJiZ2ciCmlucHV0NiA9ICJycndvYmciCgppc2Jvb21vcm5vdChpbnB1dDEsIGRlZnVzZShpbnB1dDEpKQppc2Jvb21vcm5vdChpbnB1dDIsIGRlZnVzZShpbnB1dDIpKQppc2Jvb21vcm5vdChpbnB1dDMsIGRlZnVzZShpbnB1dDMpKQppc2Jvb21vcm5vdChpbnB1dDQsIGRlZnVzZShpbnB1dDQpKQppc2Jvb21vcm5vdChpbnB1dDUsIGRlZnVzZShpbnB1dDUpKQppc2Jvb21vcm5vdChpbnB1dDYsIGRlZnVzZShpbnB1dDYpKQ==