1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | exception Undefined ;; type direction = R | L ;; type stat = T | F ;; type tape = { data : int array ; pos : int ; } ;; let rec turing state delta tape = try let mem = match tape.data.(tape.pos) with 1 -> T | 0 -> F | _ -> raise Undefined in let ins = List.find ( fun x -> match x with (state,mem,_,_,_) -> true ) delta in match ins with (v,w,x,y,z) -> tape.data.(tape.pos) <- ( match x with T -> 1 | F -> 0 ) ; turing y delta { data = tape.data ; pos = tape.pos + ( match z with R -> 1 | L -> -1 ) } ; with _ -> () ;; let op = [ (0,F,T,0,R); (0,T,F,1,R); ] ;; let tp = { data = Array.create 10 0 ; pos = 0 ; } ;; (* 実行 *) let () = turing 0 op tp ;; (* 結果を出力 *) let () = Array.iter (fun x -> print_int x ) tp.data ;; |
ZXhjZXB0aW9uIFVuZGVmaW5lZAo7Owp0eXBlIGRpcmVjdGlvbiA9IFIgfCBMIAo7OyAKdHlwZSBzdGF0ID0gVCB8IEYKOzsKdHlwZSB0YXBlID0gewogICBkYXRhIDogaW50IGFycmF5IDsKICAgcG9zICA6IGludCA7Cn0gCjs7CmxldCByZWMgdHVyaW5nIHN0YXRlIGRlbHRhIHRhcGUgPQogICB0cnkKICAgICAgbGV0IG1lbSA9IG1hdGNoIHRhcGUuZGF0YS4odGFwZS5wb3MpIHdpdGgKICAgICAgICAgICAxIC0+IFQKICAgICAgICAgfCAwIC0+IEYgCiAgICAgICAgIHwgXyAtPiByYWlzZSBVbmRlZmluZWQgaW4KICAgICAgbGV0IGlucyA9IExpc3QuZmluZCAoIGZ1biB4IC0+IG1hdGNoIHggd2l0aCAoc3RhdGUsbWVtLF8sXyxfKSAtPiB0cnVlICkgZGVsdGEgaW4KICAgICAgbWF0Y2ggaW5zIHdpdGgKICAgICAgICAgKHYsdyx4LHkseikgLT4gdGFwZS5kYXRhLih0YXBlLnBvcykgPC0gKCBtYXRjaCB4IHdpdGggVCAtPiAxIHwgRiAtPiAwICkgOwogICAgICAgICAgICAgICAgICAgICAgICB0dXJpbmcgeSBkZWx0YSAKICAgICAgICAgICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHRhcGUuZGF0YSA7IAogICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgPSB0YXBlLnBvcyArICggbWF0Y2ggeiB3aXRoIFIgLT4gMSB8IEwgLT4gLTEgKSAKICAgICAgICAgICAgICAgICAgICAgICAgfSA7ICAKICAgd2l0aAogICAgICBfIC0+ICgpCjs7CiAKbGV0IG9wID0gWwogICAoMCxGLFQsMCxSKTsKICAgKDAsVCxGLDEsUik7Cl0KOzsKIApsZXQgdHAgPSB7CiAgIGRhdGEgPSBBcnJheS5jcmVhdGUgMTAgMCA7CiAgIHBvcyAgPSAwIDsKfQo7OwogCigqIOWun+ihjCAqKQoKbGV0ICgpID0gdHVyaW5nIDAgb3AgdHAKOzsKKCog57WQ5p6c44KS5Ye65YqbICopCmxldCAoKSA9IEFycmF5Lml0ZXIgKGZ1biB4IC0+IHByaW50X2ludCB4ICkgdHAuZGF0YQo7Ow==
File "prog.ml", line 14, characters 10-13: Warning Y: unused variable mem.
-
upload with new input
-
result: Success time: 0s memory: 2780 kB returned value: 0
1111111111
-
result: Success time: 0s memory: 2780 kB returned value: 0
1111111111



