from turing_machine import TuringMachine
tm = TuringMachine(
states={'right', 'carry', 'left', 'done'},
symbols={'0', '1', ' '},
blank_symbol=' ',
input_symbols={'0', '1'},
initial_state='right',
accepting_states={'done'},
transitions={
# scan to the rightmost digit
'right': {
'1': ('right', 'R'),
'0': ('right', 'R'),
' ': ('carry', 'L')
},
# then carry the 1
'carry': {
'1': ('carry', 'L'),
'0': ('carry', 'L'),
' ': ('done', 'L')
},
#
halt on the leftmost digit
'left': {
'1': ('left', 'L'),
'0': ('left', 'L'),
' ': ('left', 'L')
},
# done
'done': {}
}
)
# Test the machine with input '1011 1101'
output = tm('1011 1101')
print(output)
ZnJvbSB0dXJpbmdfbWFjaGluZSBpbXBvcnQgVHVyaW5nTWFjaGluZQoKdG0gPSBUdXJpbmdNYWNoaW5lKAogICAgc3RhdGVzPXsncmlnaHQnLCAnY2FycnknLCAnbGVmdCcsICdkb25lJ30sCiAgICBzeW1ib2xzPXsnMCcsICcxJywgJyAnfSwKICAgIGJsYW5rX3N5bWJvbD0nICcsCiAgICBpbnB1dF9zeW1ib2xzPXsnMCcsICcxJ30sCiAgICBpbml0aWFsX3N0YXRlPSdyaWdodCcsCiAgICBhY2NlcHRpbmdfc3RhdGVzPXsnZG9uZSd9LAogICAgdHJhbnNpdGlvbnM9ewogICAgICAgICMgc2NhbiB0byB0aGUgcmlnaHRtb3N0IGRpZ2l0CiAgICAgICAgJ3JpZ2h0JzogewogICAgICAgICAgICAnMSc6ICgncmlnaHQnLCAnUicpLAogICAgICAgICAgICAnMCc6ICgncmlnaHQnLCAnUicpLAogICAgICAgICAgICAnICc6ICgnY2FycnknLCAnTCcpCiAgICAgICAgfSwKICAgICAgICAjIHRoZW4gY2FycnkgdGhlIDEKICAgICAgICAnY2FycnknOiB7CiAgICAgICAgICAgICcxJzogKCdjYXJyeScsICdMJyksCiAgICAgICAgICAgICcwJzogKCdjYXJyeScsICdMJyksCiAgICAgICAgICAgICcgJzogKCdkb25lJywgJ0wnKQogICAgICAgIH0sCiAgICAgICAgIyBoYWx0IG9uIHRoZSBsZWZ0bW9zdCBkaWdpdAogICAgICAgICdsZWZ0JzogewogICAgICAgICAgICAnMSc6ICgnbGVmdCcsICdMJyksCiAgICAgICAgICAgICcwJzogKCdsZWZ0JywgJ0wnKSwKICAgICAgICAgICAgJyAnOiAoJ2xlZnQnLCAnTCcpCiAgICAgICAgfSwKICAgICAgICAjIGRvbmUKICAgICAgICAnZG9uZSc6IHt9CiAgICB9CikKCiMgVGVzdCB0aGUgbWFjaGluZSB3aXRoIGlucHV0ICcxMDExIDExMDEnCm91dHB1dCA9IHRtKCcxMDExIDExMDEnKQpwcmludChvdXRwdXQpCg==