1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Prolog Turingmaschine

  • tomlei
  • 14. Dezember 2013 um 17:58
  • Unerledigt
  • tomlei
    3
    tomlei
    Mitglied
    Punkte
    45
    Beiträge
    6
    • 14. Dezember 2013 um 17:58
    • #1

    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. :frowning_face:


    %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)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung