Prolog Turingmaschine

  • Hallo! Kann mir jemand das Programm genau erklären ? Ich hab da leichte Probleme,
    unten mit den Bewegungen ist mir klar , aber oben habe ich Problem. :(


    %Startpostition
    start(Eingabe,Ausgabe,Startzustand,Pfad) :- [M|RBand] = Eingabe, solve(Startzustand,[],M,RBand,LiEnde,MEnde,ReEnde,Pfad),
    append(LiEnde,[MEnde],Z), append(Z,ReEnde,Ausgabe).


    solve(Startzustand,LBand,M,RBand,LiEnde,MEnde,ReEnde,Pfad) :-
    open(Pfad,read,Str),
    read_file(Str,Inhalt),close(Str),!,

    turing(Startzustand,LBand,M,RBand,LiEnde,MEnde,ReEnde,Inhalt).
    turing(AktZustand,LBand,M,RBand,LiEnde,MEnde,ReEnde,Inhalt) :- %Basisfall
    finde(AktZustand,M,Inhalt,NZeichen,ROL,'ende'),bewegung(LBand,NZeichen,RBand,ROL,LiEnde,MEnde,ReEnde).

    turing(AktZustand,LBand,M,RBand,LiEnde,MEnde2,ReEnde,Inhalt) :-
    finde(AktZustand,M,Inhalt,NZeichen,ROL,ZustandN),
    bewegung(LBand,NZeichen,RBand,ROL,LNeu,MEnde,RNeu),
    turing(ZustandN,LNeu,MEnde,RNeu,LiEnde,MEnde2,ReEnde,Inhalt).

    read_file(Stream,[]) :-
    at_end_of_stream(Stream).
    read_file(Stream,[X|L]) :-
    \+ at_end_of_stream(Stream),
    read(Stream,X),
    read_file(Stream,L).

    finde(Zustand,Zeichen,Lines,NZeichen,ROL,ZustandN) :- member(Z,Lines),(Zustand,Zeichen,NZeichen,ROL,ZustandN)=Z.


    bewegung(Links,Mitte,Rechts,ROL,LNeu,MNeu,RNeu) :- ROL= 'r', append(Links,[Mitte],LNeu),Rechts=[H|T], RNeu=T,MNeu=H.

    bewegung(Links,Mitte,Rechts,ROL,LNeu,MNeu,RNeu) :- ROL= 'r', append(Links,[Mitte],LNeu),Rechts=[],MNeu=' ',RNeu=[].

    bewegung(Links,Mitte,Rechts,ROL,LNeu,MNeu,RNeu) :- ROL= 'l', append([Mitte],Rechts,RNeu), reverse(Links,X), X=[H|T],
    reverse(T,NeuVariable),LNeu=NeuVariable, MNeu=H.

    bewegung(Links,Mitte,Rechts,ROL,LNeu,MNeu,RNeu) :- ROL= 'l', append([Mitte],Rechts,RNeu), Links=[], MNeu=' ',LNeu=[].

    3 Mal editiert, zuletzt von tomlei (14. Dezember 2013 um 18:03)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!