Hinweis: Ich bin bereit, für jede Antwort, die ich interessant finde, ein Kopfgeld zu zahlen.
Ihre Herausforderung besteht darin, einen Turing- Complete - One-Instruction-Set-Computer (OISC) zu entwerfen:
Ein OISC ist eine abstrakte Maschine, die nur einen Befehl verwendet - die Notwendigkeit eines maschinensprachlichen Opcodes entfällt. Mit einer vernünftigen Wahl für den einzelnen Befehl und mit unendlichen Ressourcen ist ein OISC in der Lage, ein universeller Computer zu sein, genauso wie herkömmliche Computer mit mehreren Befehlen.
Hier sind einige Beispiele für einzelne Befehle, die einen Turing-vollständigen OISC ausmachen.
Regeln:
Sie müssen eine Interpretation oder einen Beweis dafür vorlegen
Sie müssen einen Dolmetscher für Ihre Sprache bereitstellen. Dieser Interpreter sollte nur durch den Speicher / die Zeit eingeschränkt werden (z. B. darf er keine vom Benutzer auferlegten Einschränkungen aufweisen). Wenn Sie keinen Dolmetscher für Ihre Sprache zur Verfügung stellen (aus irgendeinem anderen Grund als Faulheit), müssen Sie nachweisen, dass es möglich ist, einen zu schreiben. Ein Dolmetscher muss möglich sein .
Sie müssen seine Turing-Vollständigkeit nachweisen
Sie müssen einen formellen Nachweis beifügen, dass Ihre Sprache Turing-vollständig ist. Eine einfache Möglichkeit, dies zu tun, besteht darin, nachzuweisen, dass es eine andere Sprache von Turing-complete interpretieren kann oder dasselbe Verhalten hat. Die grundlegendste zu interpretierende Sprache wäre Brainf ** k .
Eine normale Sprache mit denselben Befehlen wie Brainf ** k (und denselben vom Benutzer auferlegten Speicherbeschränkungen) ist beispielsweise Turing-complete, da alles, was in Brainf ** k implementiert werden kann, in der Sprache implementiert werden kann .
Hier ist eine Liste von sehr einfach zu implementierenden Turing-vollständigen Sprachen.
Zusätzliche OISC-Anforderungen
Diese OISC sollte nur eine Anweisung enthalten - sie kann nicht mehrere Anweisungen enthalten, von denen eine die Turing-Vervollständigung bewirkt.
Ihr OISC kann eine beliebige Syntax verwenden. Sie sollten in Ihrer Antwort definieren, was Anweisung ist, was Daten sind und was ein No-Op ist (z. B. Leerzeichen). Seien Sie kreativ!
Argumente müssen nicht nur ganze Zahlen sein. Zum Beispiel ist /// ein schönes Beispiel für ein Turing-vollständiges OISC.
Wie und ob Input und Output genommen und gegeben werden, bleibt Ihnen überlassen. Die meisten OISCs implementieren E / A über bestimmte Speicherorte. Möglicherweise gibt es jedoch auch andere Möglichkeiten, und Sie werden aufgefordert, eine zu finden.
Eine gültige Antwort muss einen Beispielcode in Ihrem OISC enthalten, entweder durch Einfügen in den Post oder durch Verknüpfen mit einer einfachen, in der Sprache gelösten Herausforderung.
Wählen
Wähler, bitte denken Sie daran, langweilige Einsendungen nicht zu unterstützen. Beispiele:
- lenguage -Äquivalente
- Eine Implementierung eines bestehenden OISC (Beantworter, bitte erstellen Sie Ihre eigenen!)
- Ein "OISC", in dem das erste Argument einen aufzurufenden Befehl angibt ( Beispiel )
Sie sollten jedoch interessante, kreative Beiträge unterstützen, wie z. B .:
- Ein OISC basierend auf einer mathematischen Gleichung
- Ein Turing-vollständiges ZISC basierend auf einem neuronalen Netzwerk
- Ein OISC, bei dem die Ausgabe-E / A auf andere Weise als an bestimmten Speicherorten erfolgt
Gewinnen
Wie beim Beliebtheitswettbewerb gewinnt die Antwort mit den meisten Stimmen! Viel Glück!