Talk:Universal Turing machine: Difference between revisions

From Rosetta Code
Content added Content deleted
Line 5: Line 5:


Sort a tape containing arbitrary sequences of "a" and "b" alphabetically ("*" being blank symbol, "s0" initial state, "see" terminal state):
Sort a tape containing arbitrary sequences of "a" and "b" alphabetically ("*" being blank symbol, "s0" initial state, "see" terminal state):
<!-- DKF: language arbitrary, but gets right highlighting -->

("s0", "a", "s0", "a", right)
<lang java>("s0", "a", "s0", "a", right)

("s0", "b", "s1", "B", right)
("s0", "b", "s1", "B", right)

("s0", "*", "se", "*", left)
("s0", "*", "se", "*", left)

("s1", "a", "s1", "a", right)
("s1", "a", "s1", "a", right)

("s1", "b", "s1", "b", right)
("s1", "b", "s1", "b", right)

("s1", "*", "s2", "*", left)
("s1", "*", "s2", "*", left)

("s2", "a", "s3", "b", left)
("s2", "a", "s3", "b", left)

("s2", "b", "s2", "b", left)
("s2", "b", "s2", "b", left)

("s2", "B", "se", "b", left)
("s2", "B", "se", "b", left)

("s3", "a", "s3", "a", left)
("s3", "a", "s3", "a", left)

("s3", "b", "s3", "b", left)
("s3", "b", "s3", "b", left)

("s3", "B", "s0", "a", right)
("s3", "B", "s0", "a", right)

("se", "a", "se", "a", left)
("se", "a", "se", "a", left)
("se", "*", "see", "*", right)</lang>


Example: <tt>abbabbabababab</tt> => <tt>aaaaaabbbbbbbb</tt>
("se", "*", "see", "*", right)

Example: abbabbabababab => aaaaaabbbbbbbb


--[[User:Coenig|Coenig]] 14:11, 17 February 2013 (UTC)
--[[User:Coenig|Coenig]] 14:11, 17 February 2013 (UTC)

Revision as of 09:12, 18 February 2013

Examples sufficient to find bugs in UTM?

I want to raise the question if the proposed examples (simple incrementer / busy beaver) are enough to find bugs in the code. I have to admit that I uploaded two faulty Java implementations that worked fine with both examples, before I found a (hopefully) correct version. I propose to add this example that helped me fix the bugs:

Sort a tape containing arbitrary sequences of "a" and "b" alphabetically ("*" being blank symbol, "s0" initial state, "see" terminal state): <lang java>("s0", "a", "s0", "a", right) ("s0", "b", "s1", "B", right) ("s0", "*", "se", "*", left) ("s1", "a", "s1", "a", right) ("s1", "b", "s1", "b", right) ("s1", "*", "s2", "*", left) ("s2", "a", "s3", "b", left) ("s2", "b", "s2", "b", left) ("s2", "B", "se", "b", left) ("s3", "a", "s3", "a", left) ("s3", "b", "s3", "b", left) ("s3", "B", "s0", "a", right) ("se", "a", "se", "a", left) ("se", "*", "see", "*", right)</lang>

Example: abbabbabababab => aaaaaabbbbbbbb

--Coenig 14:11, 17 February 2013 (UTC)

We get: 0111111222222220. The blanks on both ends seem to be in the rules, don't you get them? Unless I'm not reading it correctly: the very last rule, for instance, writes a blank just before he goes to the halting position, so it has to be part of the output.Fwend 20:36, 17 February 2013 (UTC)