Crear un lenguaje similar a Muriel e implementación


9

Muriel es un lenguaje donde la única forma de bucle es crear un quine y ejecutarlo. Su trabajo es crear su propio idioma con esta propiedad y su implementación en un idioma preexistente.

Definiremos un lenguaje similar a Muriel de la siguiente manera:

  1. Tiene un comando incorporado para ejecutar código en su propio idioma, similar al @comando de Muriel o Python exec.
  2. Es Turing completo.
  3. Si elimina el comando de ejecución incorporado, ya no se completará Turing.

Muriel es similar a Muriel con @su comando de ejecución incorporado. Pitufo también es similar a Muriel (su comando de ejecución incorporado es x). Python no es como Muriel, ya que todavía está completo si lo eliminas exec.

Su trabajo es crear un lenguaje de programación similar a Muriel y luego proporcionar una implementación en el idioma que elija. Su puntaje es la duración de la implementación, que está tratando de minimizar.

Notas:

  1. Su ejecución integrada no necesita funcionar exactamente como Muriel. Depende de usted cómo maneja la terminación del programa secundario, los errores, el alcance, etc.
  2. El idioma se escribe la aplicación no puede en sí ser Muriel similar. (Esto es para que @no sea una entrada válida). También debe haber existido antes de esta publicación.

¿ Underload es un lenguaje similar a Muriel?
alephalpha 01 de

@JerryJeremiah ¿Mi edición lo hace más claro?
PyRulez

@alephalpha Ese wiki dice "Sin ^, el programa restante siempre disminuirá de tamaño, y finalmente se detendrá". Si esto es cierto, entonces sí, Underload es como Muriel.
PyRulez

¿Qué haces si tu idioma de destino tiene múltiples evalcomandos? (Por ejemplo, Python execy eval) ¿Requiere la eliminación de todos ellos para perder TCness?
CalculatorFeline

1
@PyRulez Creo que esto debería ser un concurso de popularidad en lugar de un código de golf, porque de lo contrario, la elección del lenguaje de implementación lo convertiría en un desafío de camaleón
Uriel

Respuestas:


3

Python 3 y "El subconjunto de TC mínimo de Underload pero con los caracteres cambiados a 2019, invertidos y con un 0arriba", 156 bytes

c=input()
n=1
t=c
s=[]
while c:
 *c,i=c
 if n:
  if"6">i:n+=int(i)-1
  if n:t=[i]+t
  else:s+=[t];t=[]
 elif"2"==i:n=1
 elif"2">i:s+=s[-1:]
 else:c+=s.pop()

Pruébalo en línea!

Explicaciones en el encabezado, código comentado en el pie de página.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.