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 state != 7 and i < len ( wires) - 1 :
state = rules[ str ( state) + wires[ i] ]
i += 1
except KeyError :
return 7
return state
def isboomornot( input , state) :
if state == 7 :
print ( str .format ( "{0} caused an explosion ({1})" , input , state) )
else :
print ( str .format ( "{0} disarmed the bomb ({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) )
cnVsZXMgPSB7ICcwdyc6IDEsICcwcic6IDIsICcxbyc6IDMsICcxdyc6IDIsICcycic6IDAsICcyYic6IDMsICczYic6IDMsICczbyc6IDQsICczZyc6IDUsICc0Zyc6IDYsICc1byc6IDYgfQoKZGVmIGRlZnVzZShvcmRlcik6CiAgICB3aXJlcyA9IGxpc3Qob3JkZXIpCiAgICBpID0gMAogICAgc3RhdGUgPSAwCiAgICB0cnk6CiAgICAgICAgd2hpbGUgc3RhdGUgIT0gNyBhbmQgaSA8IGxlbih3aXJlcykgLSAxOgogICAgICAgICAgICBzdGF0ZSA9IHJ1bGVzW3N0cihzdGF0ZSkgKyB3aXJlc1tpXV0KICAgICAgICAgICAgaSArPSAxCiAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgcmV0dXJuIDcKICAgIHJldHVybiBzdGF0ZQoKZGVmIGlzYm9vbW9ybm90KGlucHV0LCBzdGF0ZSk6CiAgICBpZiBzdGF0ZSA9PSA3OgogICAgICAgIHByaW50KHN0ci5mb3JtYXQoInswfSBjYXVzZWQgYW4gZXhwbG9zaW9uICh7MX0pIiwgaW5wdXQsIHN0YXRlKSkKICAgIGVsc2U6CiAgICAgICAgcHJpbnQoc3RyLmZvcm1hdCgiezB9IGRpc2FybWVkIHRoZSBib21iICh7MX0pIiwgaW5wdXQsIHN0YXRlKSkKCmlucHV0MSA9ICJ3d3J3b2JiZ28iCmlucHV0MiA9ICJ3d2dvZyIKaW5wdXQzID0gInd3cnJyd3diZ28iCmlucHV0NCA9ICJ3YmJiYmdvIgppbnB1dDUgPSAiYmdnIgppbnB1dDYgPSAicnJ3b2JnIgoKaXNib29tb3Jub3QoaW5wdXQxLCBkZWZ1c2UoaW5wdXQxKSkKaXNib29tb3Jub3QoaW5wdXQyLCBkZWZ1c2UoaW5wdXQyKSkKaXNib29tb3Jub3QoaW5wdXQzLCBkZWZ1c2UoaW5wdXQzKSkKaXNib29tb3Jub3QoaW5wdXQ0LCBkZWZ1c2UoaW5wdXQ0KSkKaXNib29tb3Jub3QoaW5wdXQ1LCBkZWZ1c2UoaW5wdXQ1KSkKaXNib29tb3Jub3QoaW5wdXQ2LCBkZWZ1c2UoaW5wdXQ2KSkK