Muriel to język, w którym jedynym sposobem na zapętlenie jest stworzenie quine i wykonanie go. Twoim zadaniem jest stworzenie własnego języka za pomocą tej właściwości i implementacja go w istniejącym języku.
Zdefiniujemy język podobny do Muriela w następujący sposób:
- Ma wbudowane polecenie do wykonywania kodu w swoim własnym języku, podobnym do
@
polecenia Muriela lub pytonaexec
. - Jest ukończony.
- Jeśli usuniesz wbudowane polecenie wykonania, nie będzie ono już Turing zakończone.
Muriel jest podobny do Muriela z @
wbudowanym poleceniem wykonania. Smurf jest również podobny do Muriela (jego wbudowane polecenie wykonania jest x
). Python nie jest podobny do Muriela, ponieważ jeśli go usuniesz, nadal jest ukończony exec
.
Twoim zadaniem jest stworzenie języka programowania podobnego do Muriela, a następnie zapewnienie jego implementacji w wybranym języku. Twój wynik to długość implementacji, którą próbujesz zminimalizować.
Uwagi:
- Twoje wbudowane wykonanie nie musi działać dokładnie tak jak Muriel. Od Ciebie zależy, jak poradzi sobie z zakończeniem programu potomnego, błędami, określaniem zakresu itp.
- Językiem piszesz wdrożenie nie może sam w sobie być Muriel-podobne. (Jest tak, że
@
nie jest to prawidłowy wpis.) Musiał także istnieć przed tym postem.
eval
poleceń? (Np. Python exec
i eval
) Wymagają usunięcia wszystkich z nich, aby stracić TCness?