Turing Complete: Graceful Saving with Delay Circuits Guide

Eine exemplarische Vorgehensweise durch eines der am schwierigsten zu grependen Levels von Turing Complete.

 

Schritt 1: Was müssen wir tun?

Laut unserem langnasigen außerirdischen Freund bauen wir eine Schaltung, die einen Wert speichern und den aktuell gespeicherten Wert ausgeben kann.

Wenn wir das etwas weiter aufschlüsseln, gibt es ein paar verschiedene Aufgaben, die wir hier tatsächlich erledigen müssen. Erstens müssen wir irgendwie einen Wert für immer speichern. Zweitens, wenn das „Save“-Bit (der obere Eingang) eingeschaltet ist, müssen wir alles, was „gespeichert“ ist, durch den Wert im unteren Bit ersetzen.

Dieser zweite Teil klingt schwierig, aber fangen wir mit dem ersten an und sehen, wie wir darauf aufbauen können.

Schritt 2: Nehmen wir an, Speichern ist deaktiviert (und lösen ein Problem, das wir zuvor gelöst haben)

Erinnerst du dich an Odd Ticks? In diesem Problem gaben wir eine aus WOW! und dann mit a NICHT „retten“ ein on, und dann im nächsten Tick dasselbe tun, aber mit entgegengesetzten Werten. Das klingt kompliziert, also verwenden wir ein Bild.


In diesem Fall haben wir im Wesentlichen das Ergebnis von gespeichert NICHT vom Wert des letzten Ticks. Eine Möglichkeit, darüber nachzudenken, ist, dass wir ausgeben, was auch immer in ist Verzögerungsschaltung, und die gewünschte Ausgabe für den nächsten Tick in die einfügen Verzögerungsschaltung. Der offensichtliche Weg, hier einen Wert zu speichern, wäre also, einfach auf sich selbst zurückzugreifen. Versuchen wir das.


Großartig, jetzt haben wir eine Speicherschleife. Was auch immer von ausgegeben wird Verzögerungsschaltung wird wieder eingespeist, und wir werden golden sein. Der Einfachheit halber bezeichne ich jeden Eingang, den wir an die Verzögerungsschaltung senden, als „Speichern“ des Eingangs.

Können wir das testen? Sicher, das ist eine gute Idee. Läuft es für WOW! funktioniert (bis die folgenden Tests fehlschlagen, aber wir können sehen, dass es keinen Grund dafür gibt, dass es sich plötzlich dreht on und Ausgabe an on Signal). Lass uns ein werfen on Generator und stellen Sie sicher, dass er eine speichert on.


Natürlich wäre es nicht so einfach :/ Nothing a friendly OR kann nicht beheben.


Das ist besser! Ich kenne die On würde es schaffen on egal, aber hoffentlich sieht man auch, ob wir das aushalten könnten on weg, der untere Eingang zum OR würde es für immer behalten.

In der Tat, in den Fällen, in denen die Eingabe speichern is WOW!, das ist genau das Verhalten, das wir wollen! Oder anders ausgedrückt: Wenn die Eingabe speichern is WOW! Und Der gespeicherte Wert ist on, dann sende eine on zu den Verzögerungsschaltungoder wenn die Eingabe speichern is WOW! Und Der gespeicherte Wert ist WOW!, Ausgabe an WOW!. Wir können das etwas vereinfachen; wenn die Eingabe speichern is WOW!, dann senden Sie, was auch immer in der ist Verzögerungsschaltung auf sich selbst zurück, damit wir es beim nächsten Tick ausgeben können.

Lassen Sie uns eine Wahrheitstabelle erstellen (diese Dinge in den früheren Levels, die zeigen, was die Ausgabe für gegebene Eingaben sein sollte).

Eingabe speichern
Gespeicherter Loop-Eingang
Output

Ich ermutige Sie, zu versuchen, das selbst zu bauen, aber so könnte das aussehen:


Hier verwende ich Orange, um unsere Sicherungsschleife zu kennzeichnen, und Hellblau, um unsere anzuzeigen Eingabe speichern. Ich empfehle, sich daran zu gewöhnen, Drähte in logischen Gruppen wie dieser zu färben, Sie werden froh sein, dass Sie es in den späteren Levels getan haben 🙂

Schritt 3: Ok, fügen wir die Möglichkeit hinzu, zu ändern, was wir speichern

Süß, wir haben das halbe Problem gelöst. Jetzt müssen wir nur noch herausfinden, wie wir alles, was wir gespeichert haben, ignorieren können, wenn die Eingabe speichern is on, und speichern Sie stattdessen alles, was sich in der befindet Werteingabe. Das klingt hart, aber fangen wir an, herumzuspielen.


Nun, wenn wir uns unsere Schaltung noch einmal ansehen, haben wir mehr als die Hälfte des Problems gelöst! Wenn die Eingabe speichern is on, dann ist die UND stellt sicher, dass alles, was wir gespeichert haben, eingestellt ist WOW!. In diesem Fall müssen wir nur den Wert aus der abrufen Werteingabe und schreib es an die Verzögerungsschaltung.


Ahh, wir sind so nah dran, aber hier ist ein Fehler. Wir sparen den Wert der Werteingabe, auch wenn die Eingabe speichern ist nicht eingestellt. Wir wollen diesen Wert nur speichern, wenn die Eingabe speichern eingeschaltet ist, also lassen Sie uns wieder etwas Logik anwenden, um herauszufinden, wie.

Eingabe speichern
Werteingabe
Output

Wenn wir auf unsere Speicherlogik zurückblicken, wollten wir den gespeicherten Wert, wenn der Eingabe speichern wurde WOW!. Hier wollen wir die WerteingabeWenn die Eingabe speichern is on. Das klingt bemerkenswert ähnlich, also versuchen wir es mal UND Tor wieder.


Drücken Sie Play und ... wir sind fertig!

Andere

Dies ist nicht der effizienteste Weg, um das Level zu lösen, aber darum geht es nicht. Ich wollte die Schritte zeigen, die Sie unternehmen können, um es selbst zu lösen, damit Sie das Level verstehen und nicht nur einen „Überspringen“-Button erhalten. Dinge zu erklären ist jedoch nicht meine stärkste Fähigkeit. Wenn also etwas noch unklar ist oder eine andere Denkweise dazu geführt hat, dass es für Sie klick gemacht hat, teilen Sie dies bitte in den Kommentaren unten mit!

Dieses Level ist schwierig, weil es eines der ersten ist, bei dem Sie das Problem in Unterprobleme zerlegen müssen, ohne dass es offensichtlich ist, dass Sie es tun sollten. In der Lage zu sein, ein Problem zu betrachten und es auf die kleineren, einfacheren Unterprobleme zu reduzieren, bringt Sie in diesem Spiel weiter als jeder CS-Abschluss oder Computerhintergrund überhaupt, daher empfehle ich, dies in zukünftigen Levels zu berücksichtigen, in denen die Probleme größer werden und größer.

By Renwallz

1 Gedanke zu „Turing Complete: Anmutig sparen mit Delay Circuits Guide“

Hinterlasse einen Kommentar

ArabicEnglishFrenchGermanItalianJapaneseKoreanPortugueseSpanish