Створіть мову та реалізацію, подібну до Muriel


9

Мюріель - це мова, де єдиний спосіб зациклюватися - це створити quine та виконати її. Ваше завдання - створити свою власну мову з цим властивістю та реалізувати її на вже існуючій мові.

Ми визначимо мову, схожу з Мюриелем, наступним чином:

  1. У ньому є вбудована команда для виконання коду своєю мовою, подібно до @команди Мурієла або пітона exec.
  2. Це Тюрінг завершений.
  3. Якщо ви видалите вбудовану команду виконання, Turing більше не завершується.

Muriel схожий на Muriel як @вбудована команда виконання. Smurf також схожий на Muriel (його вбудована команда виконання x). Python не схожий на Мюріеля, оскільки він все ще закінчується Тьюрінгом, якщо його видалити exec.

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

Примітки:

  1. Вашому вбудованому виконанню не потрібно функціонувати так, як Muriel. Саме від вас залежить, як він обробляє припинення дочірньої програми, помилки, визначення обсягу тощо ...
  2. Мова, якою ви пишете реалізацію, сама по собі не може бути подібною до Muriel. (Це так, що @це неправдивий запис.) Він також повинен був існувати до цієї публікації.

Чи є Underload муріельською мовою?
алефальфа

@JerryJeremiah Чи чіткіше це редагування?
PyRulez

@alephalpha У вікі йдеться: "Без ^, програма, яка залишилася, завжди зменшиться в розмірі, з часом зупиниться". Якщо це правда, то так, "Underload" нагадує Мюріель.
PyRulez

Що ви робите, якщо ваша цільова мова має кілька evalкоманд? (Наприклад , в Python execі eval) вимагати видалення всіх їх втратити TCness?
CalculatorFeline

1
@PyRulez Я думаю, що це має бути конкуренція популярності, а не код-гольф, тому що в іншому випадку вибір мови впровадження зробить це проблемою хамелеона
Уріель,

Відповіді:


3

Python 3 та "Мінімальний підмножина TC Underload, але із символами, зміненими на 2019, перевернуті та з a 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()

Спробуйте в Інтернеті!

Пояснення у заголовку, коментований код у нижньому колонтитулі.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.