Aviso: estoy dispuesto a dar una recompensa por cualquier respuesta que me parezca interesante.
Su desafío es diseñar una computadora de conjunto de instrucciones de Turing-complete (OISC):
Un OISC es una máquina abstracta que usa solo una instrucción, lo que evita la necesidad de un código de operación de lenguaje de máquina. Con una elección juiciosa para la instrucción individual y recursos infinitos dados, un OISC es capaz de ser una computadora universal de la misma manera que las computadoras tradicionales que tienen múltiples instrucciones.
Aquí hay algunos ejemplos de comandos únicos que hacen un OISC completo de Turing.
Reglas:
Debe proporcionar una interpretación o prueba de ello.
Debe proporcionar un intérprete para su idioma. Este intérprete solo debe estar restringido por memoria / tiempo (por ejemplo, no debe tener restricciones impuestas por el usuario). Si no proporciona un intérprete para su idioma (por cualquier otro motivo que no sea la pereza), debe demostrar que es posible que se escriba uno. Un intérprete debe ser posible .
Debes demostrar su integridad de Turing
Debe incluir una prueba formal de que su idioma es Turing completo. Una forma sencilla de hacerlo es demostrando que puede interpretar o tener el mismo comportamiento que otro lenguaje completo de Turing. El lenguaje más básico para interpretar sería Brainf ** k .
Por ejemplo, un lenguaje normal que tiene los mismos comandos que Brainf ** k (y la misma falta de restricciones de memoria impuestas por el usuario) es Turing completo porque todo lo que se puede implementar en Brainf ** k se puede implementar en el idioma .
Aquí hay una lista de lenguajes completos de Turing muy fáciles de implementar.
Requisitos adicionales de OISC
Este OISC solo debe tener una instrucción: no puede tener varias instrucciones con una de ellas, lo que lo hace completo para Turing.
Su OISC puede usar cualquier sintaxis que desee. Debe definir en su respuesta qué es la instrucción, qué son los datos y qué es un no operativo (por ejemplo, espacios en blanco). ¡Ser creativo!
Los argumentos no solo necesitan ser enteros. Por ejemplo, /// es un hermoso ejemplo de un OISC completo de Turing.
Cómo y si la entrada y la salida son tomadas y dadas son dejadas a usted. La mayoría de los OISC implementan E / S a través de ubicaciones de memoria específicas, pero puede haber otras formas de hacerlo, y le recomendamos que encuentre una.
Una respuesta válida debe proporcionar un código de ejemplo en su OISC, ya sea incluyéndolo en la publicación o vinculándolo a un desafío simple resuelto en el idioma.
Votación
Votantes, por favor recuerden no votar las presentaciones aburridas. Ejemplos:
- Lenguage -equivalents
- Una implementación de un OISC existente (respondedores, ¡cree el suyo propio!)
- Un "OISC" en el que el primer argumento especifica un comando para llamar ( ejemplo )
Sin embargo, debe votar las presentaciones interesantes y creativas, como:
- Un OISC basado en una ecuación matemática
- Un ZISC completo de Turing basado en una red neuronal
- Un OISC en el que la E / S de salida ocurre de formas distintas a ciertas ubicaciones de memoria
Victorioso
Al igual que con el concurso de popularidad , ¡la respuesta con más votos gana! ¡Buena suerte!