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.
code-golf
quine
language-design
PyRulez
źródło
źródło
eval
poleceń? (Np. Pythonexec
ieval
) Wymagają usunięcia wszystkich z nich, aby stracić TCness?Odpowiedzi:
Python 3 i „Minimalny podzbiór TC niedociążenia, ale ze znakami zmienionymi na
2019
, odwróconymi i0
na górze”, 156 bajtówWypróbuj online!
Objaśnienia w nagłówku, kod komentarza w stopce.
źródło