From 33de036d4f068e97d98dbaf55535aadfb77a00e7 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Thu, 21 Sep 2017 23:27:51 +0200 Subject: First commit --- src/Turing/Examples.hs | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/Turing/Examples.hs (limited to 'src/Turing/Examples.hs') diff --git a/src/Turing/Examples.hs b/src/Turing/Examples.hs new file mode 100644 index 0000000..3b113fd --- /dev/null +++ b/src/Turing/Examples.hs @@ -0,0 +1,45 @@ +module Turing.Examples where + +import Data.List (intersperse) +import Data.Monoid + +import Turing.Machine + +mR1, mL1, mInit :: Machine +mR1 = mkMachine [(0, SymWild, R, 1)] +mL1 = mkMachine [(0, SymWild, L, 1)] +mInit = mL SymInit <> mR1 + +mR, mL, mR', mL', mW :: Symbol -> Machine +mR sy = mkMachine [(0, sy, W sy, 1), (0, SymWild, R, 0)] +mL sy = mkMachine [(0, sy, W sy, 1), (0, SymWild, L, 0)] +mR' sy = mkMachine [(0, sy, R, 0), (0, SymWild, W SymWild, 1)] +mL' sy = mkMachine [(0, sy, L, 0), (0, SymWild, W SymWild, 1)] +mW sy = mkMachine [(0, SymWild, W sy, 1)] + +mWriteStr :: String -> Machine +mWriteStr = mconcat . intersperse mR1 . map (mW . charToSym) + +mSub :: Machine +mSub = mkMachine [ (0, SymSpace, R , 1) + , (1, Symbol 'a', R , 1) + , (1, SymSpace, R , 2) + , (2, SymSpace, R , 2) + , (2, Symbol 'a', R , 3) + , (3, SymSpace, L , 9) + , (3, Symbol 'a', R , 5) + , (9, Symbol 'a', W SymSpace , 9) + , (9, SymSpace, L , 4) + , (4, SymInit, R , 10) + , (4, SymWild, L , 4) + , (5, Symbol 'a', R , 5) + , (5, SymSpace, L , 6) + , (6, Symbol 'a', W SymSpace , 6) + , (6, SymSpace, L , 7) + , (7, Symbol 'a', L , 7) + , (7, SymSpace, L , 8) + , (8, SymSpace, L , 8) + , (8, Symbol 'a', W SymSpace , 2) ] + +mDecr :: Machine +mDecr = mconcat [mR1, mR SymSpace, mL1, mW SymSpace, mL1, mL SymSpace] -- cgit v1.2.3