Universal Turing machine: Difference between revisions
Content added Content deleted
(→{{header|Java}}: Example sorting included.) |
|||
Line 826: | Line 826: | ||
machine.initializeTape(""); |
machine.initializeTape(""); |
||
System.out.println("Output (bb): " + machine.runTM()); |
System.out.println("Output (bb): " + machine.runTM()); |
||
// Sorting test (overwrite variables from above). |
|||
init = "s0"; |
|||
blank = "*"; |
|||
term = new HashSet<String>(); |
|||
term.add("see"); |
|||
trans = new HashSet<Transition>(); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s0", "a"), new StateTapeSymbolPair("s0", "a"), 1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s0", "b"), new StateTapeSymbolPair("s1", "B"), 1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s0", "*"), new StateTapeSymbolPair("se", "*"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s1", "a"), new StateTapeSymbolPair("s1", "a"), 1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s1", "b"), new StateTapeSymbolPair("s1", "b"), 1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s1", "*"), new StateTapeSymbolPair("s2", "*"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s2", "a"), new StateTapeSymbolPair("s3", "b"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s2", "b"), new StateTapeSymbolPair("s2", "b"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s2", "B"), new StateTapeSymbolPair("se", "b"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s3", "a"), new StateTapeSymbolPair("s3", "a"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s3", "b"), new StateTapeSymbolPair("s3", "b"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("s3", "B"), new StateTapeSymbolPair("s0", "a"), 1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("se", "a"), new StateTapeSymbolPair("se", "a"), -1)); |
|||
trans.add(new Transition(new StateTapeSymbolPair("se", "*"), new StateTapeSymbolPair("see", "*"), 1)); |
|||
machine = new UTM(trans, term, init, blank); |
|||
machine.initializeTape("babbababaa"); |
|||
System.out.println("Output (sort): " + machine.runTM() + "\n"); |
|||
} |
} |
||
}</lang> |
}</lang> |
||
Line 852: | Line 880: | ||
[ 1 1 1 [H] 1 1 1 ] --- (c,1)=>(halt,1)/0 |
[ 1 1 1 [H] 1 1 1 ] --- (c,1)=>(halt,1)/0 |
||
[ 1 1 1 [H] 1 1 1 ] --- (halt,1) |
[ 1 1 1 [H] 1 1 1 ] --- (halt,1) |
||
Output (bb): [1, 1, 1, 1, 1, 1] |
Output (bb): [1, 1, 1, 1, 1, 1] |
||
[ [H] b a b b a b a b a a ] --- (s0,b)=>(s1,B)/1 |
|||
[ B [H] a b b a b a b a a ] --- (s1,a)=>(s1,a)/1 |
|||
[ B a [H] b b a b a b a a ] --- (s1,b)=>(s1,b)/1 |
|||
[ B a b [H] b a b a b a a ] --- (s1,b)=>(s1,b)/1 |
|||
[ B a b b [H] a b a b a a ] --- (s1,a)=>(s1,a)/1 |
|||
[ B a b b a [H] b a b a a ] --- (s1,b)=>(s1,b)/1 |
|||
[ B a b b a b [H] a b a a ] --- (s1,a)=>(s1,a)/1 |
|||
[ B a b b a b a [H] b a a ] --- (s1,b)=>(s1,b)/1 |
|||
[ B a b b a b a b [H] a a ] --- (s1,a)=>(s1,a)/1 |
|||
[ B a b b a b a b a [H] a ] --- (s1,a)=>(s1,a)/1 |
|||
[ B a b b a b a b a a [H] * ] --- (s1,*)=>(s2,*)/-1 |
|||
[ B a b b a b a b a [H] a * ] --- (s2,a)=>(s3,b)/-1 |
|||
[ B a b b a b a b [H] a b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ B a b b a b a [H] b a b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ B a b b a b [H] a b a b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ B a b b a [H] b a b a b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ B a b b [H] a b a b a b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ B a b [H] b a b a b a b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ B a [H] b b a b a b a b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ B [H] a b b a b a b a b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ [H] B a b b a b a b a b * ] --- (s3,B)=>(s0,a)/1 |
|||
[ a [H] a b b a b a b a b * ] --- (s0,a)=>(s0,a)/1 |
|||
[ a a [H] b b a b a b a b * ] --- (s0,b)=>(s1,B)/1 |
|||
[ a a B [H] b a b a b a b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a B b [H] a b a b a b * ] --- (s1,a)=>(s1,a)/1 |
|||
[ a a B b a [H] b a b a b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a B b a b [H] a b a b * ] --- (s1,a)=>(s1,a)/1 |
|||
[ a a B b a b a [H] b a b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a B b a b a b [H] a b * ] --- (s1,a)=>(s1,a)/1 |
|||
[ a a B b a b a b a [H] b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a B b a b a b a b [H] * ] --- (s1,*)=>(s2,*)/-1 |
|||
[ a a B b a b a b a [H] b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a B b a b a b [H] a b * ] --- (s2,a)=>(s3,b)/-1 |
|||
[ a a B b a b a [H] b b b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ a a B b a b [H] a b b b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ a a B b a [H] b a b b b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ a a B b [H] a b a b b b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ a a B [H] b a b a b b b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ a a [H] B b a b a b b b * ] --- (s3,B)=>(s0,a)/1 |
|||
[ a a a [H] b a b a b b b * ] --- (s0,b)=>(s1,B)/1 |
|||
[ a a a B [H] a b a b b b * ] --- (s1,a)=>(s1,a)/1 |
|||
[ a a a B a [H] b a b b b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a B a b [H] a b b b * ] --- (s1,a)=>(s1,a)/1 |
|||
[ a a a B a b a [H] b b b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a B a b a b [H] b b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a B a b a b b [H] b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a B a b a b b b [H] * ] --- (s1,*)=>(s2,*)/-1 |
|||
[ a a a B a b a b b [H] b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a B a b a b [H] b b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a B a b a [H] b b b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a B a b [H] a b b b * ] --- (s2,a)=>(s3,b)/-1 |
|||
[ a a a B a [H] b b b b b * ] --- (s3,b)=>(s3,b)/-1 |
|||
[ a a a B [H] a b b b b b * ] --- (s3,a)=>(s3,a)/-1 |
|||
[ a a a [H] B a b b b b b * ] --- (s3,B)=>(s0,a)/1 |
|||
[ a a a a [H] a b b b b b * ] --- (s0,a)=>(s0,a)/1 |
|||
[ a a a a a [H] b b b b b * ] --- (s0,b)=>(s1,B)/1 |
|||
[ a a a a a B [H] b b b b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a a a B b [H] b b b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a a a B b b [H] b b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a a a B b b b [H] b * ] --- (s1,b)=>(s1,b)/1 |
|||
[ a a a a a B b b b b [H] * ] --- (s1,*)=>(s2,*)/-1 |
|||
[ a a a a a B b b b [H] b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a a a B b b [H] b b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a a a B b [H] b b b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a a a B [H] b b b b * ] --- (s2,b)=>(s2,b)/-1 |
|||
[ a a a a a [H] B b b b b * ] --- (s2,B)=>(se,b)/-1 |
|||
[ a a a a [H] a b b b b b * ] --- (se,a)=>(se,a)/-1 |
|||
[ a a a [H] a a b b b b b * ] --- (se,a)=>(se,a)/-1 |
|||
[ a a [H] a a a b b b b b * ] --- (se,a)=>(se,a)/-1 |
|||
[ a [H] a a a a b b b b b * ] --- (se,a)=>(se,a)/-1 |
|||
[ [H] a a a a a b b b b b * ] --- (se,a)=>(se,a)/-1 |
|||
[ [H] * a a a a a b b b b b * ] --- (se,*)=>(see,*)/1 |
|||
[ * [H] a a a a a b b b b b * ] --- (see,a) |
|||
Output (sort): [*, a, a, a, a, a, b, b, b, b, b, *]</pre> |
|||
=={{header|Mercury}}== |
=={{header|Mercury}}== |