Créer un langage et une implémentation de type Muriel


9

Muriel est un langage où la seule façon de boucler est de créer une quine et de l'exécuter. Votre travail consiste à créer votre propre langue avec cette propriété et sa mise en œuvre dans une langue préexistante.

Nous définirons un langage semblable à Muriel comme suit:

  1. Il a une commande intégrée pour exécuter du code dans son propre langage, similaire à la @commande de Muriel ou à celle de python exec.
  2. C'est Turing complet.
  3. Si vous supprimez la commande d'exécution intégrée, elle n'est plus terminée.

Muriel ressemble à Muriel avec @comme commande d'exécution intégrée. Schtroumpf est également semblable à Muriel (sa commande d'exécution intégrée est x). Python n'est pas comme Muriel, car il est toujours complet si vous le supprimez exec.

Votre travail consiste à créer un langage de programmation de type Muriel, puis à en fournir une implémentation dans le langage de votre choix. Votre score est la longueur de l'implémentation, que vous essayez de minimiser.

Remarques:

  1. Votre exécution intégrée n'a pas besoin de fonctionner exactement comme Muriel. C'est à vous de voir comment il gère la fin du programme enfant, les erreurs, la portée, etc.
  2. Le langage dans lequel vous écrivez l'implémentation ne peut pas lui -même ressembler à Muriel. (C'est ainsi ce @n'est pas une entrée valide.) Elle doit également avoir existé avant ce poste.

Underload est- il un langage semblable à Muriel?
alephalpha

@JerryJeremiah Ma modification est-elle plus claire?
PyRulez

@alephalpha Ce wiki dit "Sans ^, le programme restant diminuera toujours en taille, s'arrêtant éventuellement." Si c'est vrai, alors oui, Underload ressemble à Muriel.
PyRulez

Que faites-vous si votre langue cible a plusieurs evalcommandes? (Par exemple, Python execet eval) Exiger la suppression de tous pour perdre TCness?
CalculatorFeline

1
@PyRulez Je pense que cela devrait être un concours de popularité plutôt qu'un code-golf, car sinon le choix du langage d'implémentation en ferait un défi de caméléon
Uriel

Réponses:


3

Python 3 et "Le sous-ensemble TC minimum de Underload mais avec les caractères modifiés 2019, inversés et avec un 0sur le dessus", 156 octets

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

Essayez-le en ligne!

Explications dans l'en-tête, code commenté dans le pied de page.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.