Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   MOD-Berechnung mit einer Turing-Maschine (https://www.delphipraxis.net/171820-mod-berechnung-mit-einer-turing-maschine.html)

Mokuba01 26. Nov 2012 20:33

MOD-Berechnung mit einer Turing-Maschine
 
'n Abend,

vielleicht nicht zuletzt wegen dieser späten Stunde habe ich grad irgendeine Denkblockade und zweifle bereits an mir selbst.

Ich wollte einfach eine mod-Funktion mit unären Zahlen umsetzen. Ich wollte einfach dividieren (zyklisch abziehen), bis es nicht mehr geht und dann gucken, was übrig ist. Ich habe meinen Entwurf leider auf dem Papier gemacht, hoffe ihr versteht, was ich meine.

Wie würdet ihr so ein Turingmaschinenprogramm bauen?

Danke für Eure Hilfe und einen schönen Abend noch
mfg ApfelSandwich

PS: Die Sektion heißt "Prgrammierung allgemein" also sind auch Turingmaschinen hier am richtigen Platz, oder?

BUG 26. Nov 2012 22:22

AW: MOD-Berechnung mit einer Turing-Maschine
 
Zitat:

Zitat von Mokuba01 (Beitrag 1193093)
Ich wollte einfach dividieren (zyklisch abziehen), bis es nicht mehr geht und dann gucken, was übrig ist.

Das würde ich auch so machen.

Angenommen man hat folgende Eingabe: (das Pipe sind ist ein Blank oder eine andere Begrenzung).
Code:
|aaa|bb|
Was bedeutet: 3 mod 2 = ?

Dann würde ich durch "darüberscannen" soviele a's entfernen wie es b's gibt und dabei die b's ersetzen:
Code:
|a|BB|
Für den nächsten Durchlauf dann die B's zurücksetzten:
Code:
|a|bb|
Nach dem nächsten Schleifendurchlauf müsstest du bemerken das alle a's weg sind, aber noch b's übrig:
Code:
||Bb|
Das ist ja leicht zu erkennen.

Schließlich noch alles entfernen, was kein b ist:
Code:
|b|
Fertig.

Das in ein Turing-Programm zu gießen ist dann nur noch Schreibarbeit (wenn man die es paar mal geübt hat) :stupid:
Wenn dir lustig ist, kannst du die Schleifendurchläufe auch zählen und erhältst damit das Ergebnis der ganzzahligen Division.

Mokuba01 26. Nov 2012 23:28

AW: MOD-Berechnung mit einer Turing-Maschine
 
Danke für Deine Antwort. So in etwa hatte ich mir das auch aufgemahlt. Ich hatte etwa den gleichen Ansatz. Dann liegt mein Fehler wohl nicht im Ansatz, sondern nur in der Umsetzung. Habe daher die Skizze nochmal in Programmcode für den Simulator geschrieben.
Für diesen Simulator: http://ironphoenix.org/tril/tm/
sieht mein Code so aus:

Code:
1,a,1,a,<
1,#,2,#,>
2,a,3,#,>
3,a,3,a,>
3,#,4,#,>
4,S,4,S,>
4,b,5,S,>
5,#,6,#,<
5,b,7,b,<
6,S,6,b,<
6,#,8,#,<
7,b,7,b,<
7,S,7,S,<
7,#,8,#,<
8,a,8,a,<
8,#,9,#,>
9,#,10,#,<
9,a,1,a,>
Irgendwie hängt er sich dann aber nach State 8 auf, sofern es nur noch ein a gibt. Aber mit 4a und 3b funktioniert das ganze auch nicht sauber. Oder hab ich das mit den b's falsch verstanden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz