Crea un linguaggio e un'implementazione simili a Muriel


9

Muriel è un linguaggio in cui l'unico modo per eseguire il loop è creare un quine ed eseguirlo. Il tuo compito è creare la tua lingua con questa proprietà e implementarla in una lingua preesistente.

Definiremo un linguaggio simile a Muriel come il seguente:

  1. Ha un comando integrato per l'esecuzione del codice nella sua lingua, simile al @comando di Muriel o di Python exec.
  2. È Turing completo.
  3. Se si rimuove il comando di esecuzione integrato, Turing non è più completo.

Muriel è simile a Muriel con @il comando di esecuzione integrato. Puffo è anche simile a Muriel (il suo comando di esecuzione integrato è x). Python non è simile a Muriel, poiché è ancora Turing completo se lo rimuovi exec.

Il tuo compito è quello di creare un linguaggio di programmazione simile a Muriel e quindi di implementarlo in un linguaggio a tua scelta. Il tuo punteggio è la lunghezza dell'implementazione, che stai cercando di minimizzare.

Appunti:

  1. La tua esecuzione integrata non deve funzionare esattamente come Muriel. Dipende da te come gestisce la chiusura del programma figlio, errori, scoping, ecc ...
  2. La lingua in cui scrivi l'implementazione non può essere di per simile a Muriel. (Questo è così che @non è una voce valida.) Deve anche essere esistito prima di questo post.

Underload è una lingua simile a Muriel?
alephalpha,

@JerryJeremiah La mia modifica lo rende più chiaro?
PyRulez,

@alephalpha Quel wiki dice "Senza ^, il programma rimanente diminuirà sempre di dimensioni, eventualmente arrestandosi". Se questo è vero, allora sì, Underload è simile a Muriel.
PyRulez,

Cosa fai se la tua lingua di destinazione ha più evalcomandi? (Ad esempio Python exece eval) Richiede la rimozione di tutti per perdere TCness?
Calcolatrice

1
@PyRulez Penso che questo dovrebbe essere contest-popolarità piuttosto che code-golf, perché altrimenti la scelta del linguaggio di implementazione lo renderebbe una sfida camaleontica
Uriel,

Risposte:


3

Python 3 e "Il sottoinsieme TC minimo di Underload ma con i caratteri cambiati in 2019, invertiti e con un 0in cima", 156 byte

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()

Provalo online!

Spiegazioni nell'intestazione, codice commentato nel piè di pagina.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.