Turing abgeschlossen: Anmutig sparen mit dem Leitfaden für Verzögerungsschaltungen

A walkthrough of one of Turing Complete’;s schwierigste Ebenen zu grep.

 ;

Schritt 1: Was müssen wir tun?

Laut unserem langnasigen außerirdischen Freund, we’;Wiederaufbau einer Schaltung, die einen Wert speichern kann, und geben Sie den aktuell gespeicherten Wert aus.

Brechen Sie das ein bisschen mehr herunter, there’;s a few different tasks we’;re eigentlich erforderlich, hier zu tun. Zuerst, wir müssen irgendwie einen Wert für immer speichern. Zweitens, if the “;save”; Bit (der obere Eingang) ist an, then we need to replace whatever is “;saved”; mit dem Wert im unteren Bit.

Der 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 ausgeschaltet (and solve a problem we’;schon mal gelöst)

Denken Sie an ungerade Ticks? In diesem Problem gaben wir eine aus aus und dann mit a NICHT to “;save”; ein an, und dann im nächsten Tick dasselbe tun, aber mit entgegengesetzten Werten. Das klingt kompliziert, Also lass uns ein Bild verwenden.


In diesem Fall, Wir haben im Wesentlichen das Ergebnis von gespeichert NICHT of the last tick’;Ich empfehle Folgendes. 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ückzugehen. Versuchen wir das.


Groß, Jetzt haben wir eine Sicherungsschleife. Was auch immer von ausgegeben wird Verzögerungsschaltung wird wieder eingespeist, and we’;werde golden sein. Der Einfachheit halber, I’;m going to refer to whatever input we’;re sending to the delay circuit as “;saving”; die Eingabe.

Können wir das testen? Mit Sicherheit, that’;ist eine gute Idee. Läuft es für aus funktioniert (bis die folgenden Tests fehlschlagen, but we can see there’;Es gibt keinen Grund, dass es sich plötzlich dreht an und Ausgabe an an Signal). Let’;s werfen ein an Generator und stellen Sie sicher, dass er eine speichert an.


Of course it wouldn’;So einfach ist das nicht :/ Nichts freundliches ODER can’;nicht reparieren.


That’;s Distrikt, der vorübergehend den Stabilitäts-Debuff von -10 % durch den Bau dieses Distrikts ausgleicht! Ich kenne die Auf würde es schaffen an trotzdem, aber hoffentlich sieht man auch, ob wir das aushalten könnten an ein Weg, der untere Eingang zum ODER würde es für immer behalten.

Eigentlich, in den Fällen, wo die Eingabe speichern ist aus, das ist genau das Verhalten, das wir wollen! Oder anders ausgedrückt, Wenn die Eingabe speichern ist aus Und Der gespeicherte Wert ist an, dann sende eine an zum Verzögerungsschaltung, oder wenn die Eingabe speichern ist aus Und Der gespeicherte Wert ist aus, Ausgabe ein aus. Wir können das etwas vereinfachen; wenn die Eingabe speichern ist aus, dann schick was drin steht Verzögerungsschaltung zurück zu sich selbst, damit wir es beim nächsten Tick ausgeben können.

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

Eingabe speichern
Gespeicherter Loop-Eingang
Ausgabe

Ich ermutige Sie, es selbst zu versuchen und zu bauen, but here’;So könnte das aussehen:


Here I’;Ich benutze Orange, um unsere Sicherungsschleife zu kennzeichnen, und hellblau, um unsere zu zeigen Eingabe speichern. Ich empfehle, sich anzugewöhnen, Drähte in logischen Gruppen wie dieser zu färben, you’;Ich werde froh sein, dass du es auf den späteren Ebenen getan hast 🙂

Schritt 3: Okay, Lassen Sie uns die Möglichkeit hinzufügen, zu ändern, was wir speichern

Süss, 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 ist an, und speichern Sie stattdessen, was auch immer in der ist Werteingabe. Das klingt hart, aber fangen wir an herumzuspielen.


Naja eigentlich, Blick auf unsere Schaltung noch einmal, we’;Habe mehr als die Hälfte des Problems gelöst! Wenn die Eingabe speichern ist an, dann ist die UND stellt sicher, dass alles, was wir gespeichert haben, eingestellt ist aus. In diesem Fall, Alles, was wir tun müssen, ist, den Wert aus dem zu holen Werteingabe und schreibe es an die Verzögerungsschaltung.


Ahh, we’;so nah dran, but there’;ist hier ein Fehler. We’;Re Speichern des Wertes der Werteingabe, auch wenn die Eingabe speichern ist nicht eingestellt. Wir wollen diesen Wert nur speichern, wenn die Eingabe speichern ist an, Lassen Sie uns also wieder etwas Logik anwenden, um herauszufinden, wie.

Eingabe speichern
Werteingabe
Ausgabe

Rückblickend auf unsere Speicherlogik, Wir wollten den gesparten Wert, wenn die Eingabe speichern war aus. Hier wollen wir die Werteingabe, wenn die Eingabe speichern ist an. Das klingt erstaunlich ähnlich, also lass uns versuchen UND Tor wieder.


Hit play and…; we’;wieder fertig!

Sonstiges

This isn’;Dies ist der effizienteste Weg, um das Level zu lösen, but that’;ist nicht der Punkt. Ich wollte die Schritte zeigen, die Sie unternehmen können, um es selbst zu lösen, so that you can understand the level and not just get a “;skip”; Taste. Explaining things isn’;t meine stärkste Fähigkeit jedoch, so if there’;s something that’;ist noch unklar, oder eine andere Denkweise, die es für Sie zum Klicken gebracht hat, Bitte teilen Sie in den Kommentaren unten!

This level is hard because it’;Es ist eines der ersten, bei dem Sie das Problem in Unterprobleme zerlegen müssen, ohne dass es offensichtlich ist, dass Sie dies tun sollten. In der Lage sein, ein Problem zu betrachten und es auf das Kleinere zu vereinfachen, Leichtere Unteraufgaben bringen 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 immer größer werden.

Von Renwallz

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*