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:
- Il a une commande intégrée pour exécuter du code dans son propre langage, similaire à la
@
commande de Muriel ou à celle de pythonexec
. - C'est Turing complet.
- 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:
- 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.
- 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.
eval
commandes? (Par exemple, Python exec
et eval
) Exiger la suppression de tous pour perdre TCness?