Turing completo: Guardar correctamente con la guía de circuitos de retardo

A walkthrough of one of Turing Complete’;Los niveles más difíciles de grep.

 ;

Paso 1: Qué tenemos que hacer?

Según nuestro amigo extraterrestre de nariz larga, we’;reconstruyendo un circuito que puede ahorrar un valor, y generar cualquier valor que esté guardado actualmente.

Desglosando eso un poco más, there’;s a few different tasks we’;en realidad se requiere hacer aquí. Primero, necesitamos de alguna manera guardar un valor para siempre. en segundo lugar, if the “;save”; poco (la entrada superior) Está encendido, then we need to replace whatever is “;saved”; con el valor en el bit inferior.

Esa segunda parte suena complicada., pero comencemos con el primero y veamos cómo podemos construir a partir de eso.

Paso 2: Supongamos que Guardar está desactivado (and solve a problem we’;he resuelto antes)

Recuerda las garrapatas impares? En ese problema estábamos dando salida a un apagado y luego usando un NO to “;save”; un en, y luego en el siguiente tick haciendo lo mismo pero con valores opuestos. eso suena complicado, así que usemos una imagen.


En este caso, básicamente estábamos guardando el resultado de la NO of the last tick’;Buff todas las unidades de tipo Supremo en esta unidad '. Una forma de pensar en esto es que estamos generando lo que sea que esté en el circuito de retardo, y poniendo la salida que queremos para el siguiente tick en el circuito de retardo. Entonces, la forma obvia de guardar un valor aquí sería simplemente retroceder sobre sí mismo. intentemos eso.


Genial, ahora tenemos un ciclo de guardado. Cualquiera que sea la salida del circuito de retardo será retroalimentado en él, and we’;será dorado. Por simplicidad, I’;m going to refer to whatever input we’;re sending to the delay circuit as “;saving”; la entrada.

¿Podemos probar esto?? Con seguridad, that’;es una buena idea. ejecutándolo por apagado obras (hasta que las pruebas a continuación fallan, but we can see there’;no hay razón para que de repente gire en y generar un en señal). Let’;tirar un en generador y asegúrese de que ahorra un en.


Of course it wouldn’;no será tan fácil :/ Nada un amistoso O can’;arreglar.


That’;es mejor! Sé que el En lo haría en independientemente, pero espero que puedas ver incluso si pudiéramos tomar eso en lejos, la entrada inferior a la O lo mantendría para siempre.

De hecho, en los casos en que el guardar entrada es apagado, este es exactamente el comportamiento que queremos! O de otra forma de expresarlo, 1/7 de salud Guardar entrada es apagado Y el valor guardado es en, luego envía un en al circuito de retardo, o si el Guardar entrada es apagado Y el valor guardado es apagado, salida de un apagado. Podemos simplificar eso un poco.; Si el Guardar entrada es apagado, entonces envía lo que esté en el circuito de retardo volver a sí mismo, para que podamos generarlo en el siguiente tick.

Hagamos una tabla de verdad (esas cosas en los niveles anteriores que muestran cuál debería ser la salida para entradas dadas).

Guardar entrada
Entrada de bucle guardada
Producción

Te animo a que intentes construirlo tú mismo., but here’;cómo se vería eso:


Here I’;estoy usando naranja para indicar nuestro ciclo de guardado, y azul claro para mostrar nuestro guardar entrada. Recomiendo adquirir el hábito de colorear los cables en grupos lógicos como este, you’;Me alegraré de que lo hayas hecho en los niveles posteriores 🙂

Paso 3: OK, Agreguemos la capacidad de cambiar lo que guardamos

Dulce, tenemos la mitad del problema resuelto. Ahora solo tenemos que descubrir cómo ignorar lo que hayamos guardado cuando el guardar entrada es en, y en su lugar guarde lo que esté en el entrada de valor. eso suena duro, pero comencemos a jugar.


Bueno en realidad, mirando nuestro circuito de nuevo, we’;tengo más de la mitad del problema resuelto! 1/7 de salud guardar entrada es en, entonces la Y se asegurará de que todo lo que hayamos guardado se establezca en apagado. En este caso, todo lo que tenemos que hacer es tomar el valor de la entrada de valor y escríbelo al circuito de retardo.


Ah, we’;estas tan cerca, but there’;aqui hay un error. We’;volviendo a guardar el valor de la entrada de valor, incluso cuando el guardar entrada no está configurado. Sólo queremos guardar ese valor si el guardar entrada Está encendido, así que usemos un poco de lógica de nuevo para averiguar cómo.

Guardar entrada
Entrada de valor
Producción

Mirando hacia atrás en nuestra lógica de guardado, queríamos el valor guardado si el guardar entrada era apagado. Aquí queremos la entrada de valor, Si el guardar entrada es en. Eso suena notablemente similar, así que intentemos un Y puerta de nuevo.


Hit play and…; we’;1'!

Otro

This isn’;t la forma más eficiente de resolver el nivel, but that’;no es el punto. Quería mostrar los pasos que puede seguir para resolverlo usted mismo, so that you can understand the level and not just get a “;skip”; botón. Explaining things isn’;t mi habilidad más fuerte sin embargo, so if there’;s something that’;todavía no está claro, o una forma diferente de pensar que hizo clic para ti, por favor comparte en los comentarios a continuación!

This level is hard because it’;Es uno de los primeros que requiere que divida el problema en subproblemas sin que sea obvio que debe hacerlo.. Ser capaz de ver un problema y simplificarlo hasta el más pequeño, Los subproblemas más fáciles lo llevarán más lejos en este juego que cualquier título de CS o experiencia informática., así que recomiendo tenerlo en cuenta en futuros niveles donde los problemas se hacen cada vez más grandes.

Por Renwallz

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo no será publicada.


*