Создать Muriel-подобный язык и реализацию

9

Muriel - это язык, где единственный способ сделать цикл - создать квин и выполнить его. Ваша задача - создать свой собственный язык с этим свойством и реализовать его на уже существующем языке.

Мы определим Muriel-подобный язык следующим образом:

  1. Он имеет встроенную команду для выполнения кода на своем собственном языке, аналогичном @команде Мюриэль или Python exec.
  2. Тьюринг завершен.
  3. Если вы удалите встроенную команду выполнения, она больше не будет завершена по Тьюрингу.

Мюриэль похожа на Мюриэль с @ее встроенной командой выполнения. Smurf также похож на Muriel (встроенная команда выполнения - x). Python не похож на Muriel, поскольку он все еще завершен по Тьюрингу, если вы удалите его exec.

Ваша задача - создать Muriel-подобный язык программирования, а затем обеспечить его реализацию на выбранном вами языке. Ваша оценка - это продолжительность реализации, которую вы пытаетесь минимизировать.

Ноты:

  1. Ваше встроенное исполнение не должно функционировать точно так же, как Мюриэл. Это зависит от вас, как он обрабатывает завершение дочерней программы, ошибки, определение объема и т. Д ...
  2. Язык, на котором вы пишете реализацию, сам по себе не может быть похож на Muriel. (Это так, что @это недействительная запись.) Она также должна существовать до этого поста.
PyRulez
источник
Является ли Underload языком, похожим на Muriel?
алефальфа
@JerryJeremiah Мое редактирование проясняет ситуацию?
PyRulez
@alephalpha Эта вики говорит: «Без ^, оставшаяся программа всегда будет уменьшаться в размере, в конечном итоге останавливаясь». Если это правда, то да, недогруз похож на Мюриэль.
PyRulez
Что вы делаете, если ваш целевой язык имеет несколько evalкоманд? (Например , в Python execи eval) требовать удаления всех их потерять TCness?
CalculatorFeline
1
@PyRulez Я думаю, что это должен быть конкурс популярности, а не код-гольф, потому что в противном случае выбор языка реализации сделал бы это вызовом для хамелеона
Уриэль

Ответы:

3

Python 3 и «Минимальное подмножество TC недогрузки, но с символами, которые были изменены 2019, обращены и с 0верхом», 156 байт

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

Попробуйте онлайн!

Пояснения в шапке, прокомментированный код в нижнем колонтитуле.

CalculatorFeline
источник