Turingmaschinen in autotool


Benutzung

Ein Ansatz für die Aufgabe IX.3 sieht so aus:
import Turing

data Z = A0 | A1 | A2 | B | C | D | E | F     deriving (Eq, Ord, Show)

student :: Turing Char Z
student = Turing 
	{ eingabealphabet = mkSet "I"
	, leerzeichen	  = '#'
	, arbeitsalphabet = mkSet "#abI"
	, zustandsmenge	 = mkSet [ A0, A1, A2, B, C, D, E, F ]
	, tafel = t
	, startzustand	 = A0
	, endzustandsmenge = mkSet [ F ]
	}

t = listToFM
      [ ( ('I', A0), mkSet [ ( 'a', A1, R ) ] )
      , ( ('I', A1), mkSet [ ( 'a', A2, R ) ] )
      , ( ('I', A2), mkSet [ ( 'a', A2, R ), ('I', B, L) ] )

      , ( ('a', B), mkSet [ ('a', B, L) ] )
      , ( ('b', B), mkSet [ ('b', B, L) ] )
      , ( (???, B), mkSet [ (???, C, ?) ] )

      , ( (???, C), mkSet [ (???, D, ?) ] )
      , ( (???, C), mkSet [ (???, E, ?) ] )

      , ( ('a', D), mkSet [ ('a', D, R) ] )
      , ( ('b', D), mkSet [ ('b', D, R) ] )
      , ( ('I', D), mkSet [ ('b', B, L) ] )

      , ( ('b', E), mkSet [ ('a', E, R) ] )
      , ( (???, E), mkSet [ (???, B, ?) ] )

      , ( (???, ?), mkSet [ (???, F, ?) ] )
      ]
Sie müssen in den Zeilen mit ??? noch die passenden Werte einsetzen.

Implementierung

(Definition siehe Skript Seite 61). Der Datentyp ist
data Turing y z = 
     Turing { eingabealphabet  :: Set y
	    , arbeitsalphabet  :: Set y
	    , leerzeichen	     :: y
	    , zustandsmenge    :: Set z 
	    , tafel	     :: FiniteMap (y, z) (Set (y, z, Bewegung))
	    , startzustand     :: z
	    , endzustandsmenge :: Set z
	    }

data Bewegung = L | O | R
     deriving (Eq, Show, Ord)
Set y ist der Typ der Mengen mit Elementen aus y, und FiniteMap a b sind endliche Abbildungen (stellen Sie sich Hashtabellen oder Suchbäume vor) mit Schlüsseln aus a und Werten aus b.
Lesen Sie bei Bedarf hier Erläuterungen zum verwendeten Mailprozessor.

Es kann sein, daß das System Sicherheitslücken besitzt (siehe Beschreibung). Wenn Sie wollen, versuchen Sie diese zu finden, und informieren Sie mich. Ansonsten lassen Sie das Hacken lieber.

Der wahre Hacker kann sich gern die Quellen anschauen, mit nach Hause nehmen, und mit einem Haskell-System selbst ausführen.


best viewed with any browser


http://www.informatik.uni-leipzig.de/~joe/ mailto:joe@informatik.uni-leipzig.de