# HG changeset patch # User Christian Urban <christian dot urban at kcl dot ac dot uk> # Date 1362269893 0 # Node ID 5e2e576fac7cc190398c2fb991831bd95bb17dde # Parent b16dfc467b678e0ecfe671cf479a75810abf0911 tuned abacus to turing compilation diff -r b16dfc467b67 -r 5e2e576fac7c scala/ex.scala --- a/scala/ex.scala Sat Mar 02 10:42:39 2013 +0000 +++ b/scala/ex.scala Sun Mar 03 00:18:13 2013 +0000 @@ -17,6 +17,8 @@ println("TMfindnth: " + (TMFindnth(3).run(Tape(1,2,3,4,5)))) println("TMMopup: " + (TMMopup(3).run(Tape(1,2,3,4,5)))) +println("TMCopyMop: " + ((TMCopy :+ TMMopup(0)))) +println("TMCopyMop: " + ((TMCopy :+ TMMopup(1)).run(Tape(3)))) // Abacus machine examples def Copy(in: Int, out: Int, jump: Int) = @@ -104,32 +106,18 @@ //println("Prime(4) " + test_comp2(Prime, 4)) println("Strt(1)(2) " + test_comp2(Strt(1), 2)) -def test_comp1a(f: Rec, ns: Int*) = { - val (abc_f, arity, _) = compile_rec(f) - val tm1 = toTM(abc_f.p) - val res = tm1.run(Tape(ns.toList)) - ("Result: " + res + " length: " + tm1.p.length + " tape: " + arity) -} -println("") -println("S(3) " + test_comp1a(S, 3)) -println("Const(10) " + test_comp1a(Const(10), 0)) -println("Add(6, 3) " + test_comp1a(Add, 6, 3)) - -/* def test_comp1(f: Rec, ns: Int*) = { val (abc_f, arity, _) = compile_rec(f) val tm = toTM(abc_f.p) :+ TMMopup(arity) val res = tm.run(Tape(ns.toList)) - ("Result: " + res + " length: " + tm.p.length + " tape: " + arity) + ("length: " + tm.p.length + " tape: " + arity + "\nResult: " + res) } println("") println("S(3) " + test_comp1(S, 3)) println("Const(10) " + test_comp1(Const(10), 0)) println("Add(6, 3) " + test_comp1(Add, 6, 3)) +println("Mult(4, 5) " + test_comp1(recs.Mult, 4, 5)) +println("Fact(4) " + test_comp1(Fact, 4)) -*/ -//println(toTM(compile_rec(Add)._1.p).run(Tape(3, 4, 0))) -//println(compile_rec(Add)._1.run(Map(0 -> 3, 1 -> 8, 2 -> 0))) -//compile_rec(Add)._1.run(Map(0 -> 3, 1 -> 4, 2 -> 0)) diff -r b16dfc467b67 -r 5e2e576fac7c scala/turing.scala --- a/scala/turing.scala Sat Mar 02 10:42:39 2013 +0000 +++ b/scala/turing.scala Sun Mar 03 00:18:13 2013 +0000 @@ -65,7 +65,7 @@ // composition def ++ (that: TM) = TM(this.p ::: that.p) - def :+ (that: TM) = this.adjust ++ that.shift(this.p.length / 2 + 1) + def :+ (that: TM) = this.adjust ++ that.shift(this.p.length / 2) def shift(n: Int) = TM(p.map{case (a, s) => (a, if (s == 0) 0 else s + n)})