[BADD.REC] [Turing Machine which sums binary numbers] [[]] { [head right] (AAB;'.'I;;)+ [head left] (B;j'.'I;;)- [head stationary] (;)0 [test equality] (pGm=n;nL)= [cr.lf] (2573TL;)& [read phrase] (R13%='';08%(=)(T@J|;08%T' 'TLTLL@J;);)J [sign-on message] (' This Turing Machine will sum two binary numbers. Its initial tape should have the form =a+b=, with the head positioned at the right equal sign. For example, =111110+011#= Each keystroke will show one step in the Machine`s operation, until the sum has been completed and the extra symbols have been erased. 'TL@&'Initial Tape:'TL@&@JJZDI'#'FD;:)R [write tape segment] (j(20b;J;)qtz' 'TABqtTLz(20a;LZ;)qtB;) W (@R'Q0'(@&@WRLT ('Q0'@='='E;)D' 'IL'dig'@-: ('dig'@='0'E;)D'='IL'zle'@-: ('dig'@='1'E;)D'='IL'ole'@-: ('dig'@='+'E;)D'+'IL'lef'@-: ('zle'@='0'E;)D'0'IL'zle'@-: ('zle'@='1'E;)D'1'IL'zle'@-: ('zle'@='+'E;)D'+'IL'zad'@-: ('ole'@='0'E;)D'0'IL'ole'@-: ('ole'@='1'E;)D'1'IL'ole'@-: ('ole'@='+'E;)D'+'IL'oad'@-: ('zad'@='a'E;)D'a'IL'zad'@-: ('zad'@='b'E;)D'b'IL'zad'@-: ('zad'@='0'E;)D'a'IL'rig'@+: ('zad'@='1'E;)D'b'IL'rig'@+: ('zad'@='='E;)D'='IL'rig'@+: ('oad'@='a'E;)D'a'IL'oad'@-: ('oad'@='b'E;)D'b'IL'oad'@-: ('oad'@='0'E;)D'b'IL'rig'@+: ('oad'@='1'E;)D'a'IL'car'@-: ('oad'@='='E;)D'b'IL'new'@-: ('car'@='0'E;)D'1'IL'rig'@+: ('car'@='1'E;)D'0'IL'car'@-: ('car'@='='E;)D'1'IL'new'@-: ('new'@='.'E;)D'='IL'rig'@+: ('rig'@='0'E;)D'0'IL'rig'@+: ('rig'@='1'E;)D'1'IL'rig'@+: ('rig'@='a'E;)D'a'IL'rig'@+: ('rig'@='b'E;)D'b'IL'rig'@+: ('rig'@='+'E;)D'+'IL'rig'@+: ('rig'@='='E;)D' 'IL'dig'@-: ('lef'@='0'E;)D'0'IL'lef'@-: ('lef'@='1'E;)D'1'IL'lef'@-: ('lef'@='a'E;)D'a'IL'lef'@-: ('lef'@='b'E;)D'b'IL'lef'@-: ('lef'@='='E;)D' 'IL'fin'@+: ('fin'@='0'E;)D'0'IL'fin'@+: ('fin'@='1'E;)D'1'IL'fin'@+: ('fin'@='a'E;)D'0'IL'fin'@+: ('fin'@='b'E;)D'1'IL'fin'@+: ('fin'@='+'E;)D' 'IL'fin'@+: ('fin'@='='E;)D' 'IL'H'@-: 'H'=;);)} [end]