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.
evalpoleceń? (Np. Python execi eval) Wymagają usunięcia wszystkich z nich, aby stracić TCness?