Istnieje wiele wyzwań, które mówią „interpretować X”, gdzie X jest prostym językiem. Moim zdaniem jest to zbyt nudne. Aby dać wszystkim zwlekającym ludziom w Internecie coś ciekawego do zrobienia, możesz spróbować wykonać to wyzwanie:
Wyzwanie
Wybierz język $LANG
. $LANG
może być dowolnym kompletnym językiem programowania Turinga lub kompletnym podzbiorem języka programowania Turinga. Pamiętaj, że jeśli pominiesz funkcję swojego języka w $LANG
tłumaczeniu, nie możesz używać go również w swoim własnym programie, ponieważ twoje zgłoszenie musi być również zapisane $LANG
.
Napisz kompilator / tłumacz dla $LANG
napisanych w $LANG
. Możesz użyć wszystkich udogodnień (w tym eval
i znajomych) swojego języka, które są dostępne do napisania tego kompilatora. Aby zadanie było trudniejsze, istnieje jedno ograniczenie: Twój program powinien być w stanie interpretować / kompilować wszystkie prawidłowe programy z $LANG
wyjątkiem samego interpretera / kompilatora. Jeśli okaże się, że program do interpretacji / kompilacji jest twoim interpreterem lub kompilatorem (niezależnie od nazwy pliku), twój program powinien zrobić coś zupełnie niezwiązanego z funkcjonalnością interpretera lub kompilatora (np. Wygładzanie lub drukowanie Hello, world!
).
Aby uczynić to zadanie jeszcze bardziej złożonym, twój program nie może czytać własnego źródła podczas kompilacji lub interpretacji.
Dane techniczne
- To zadanie polega na kodowaniu w golfa. Zgłoszenie zawierające najmniej poprawnych znaków wygrywa. W przypadku remisu rozwiązanie, które zostało przesłane jako pierwsze, wygrywa.
- Twój program / skrypt powinien odczytać program do interpretacji z pliku. Możesz na stałe zakodować jego ścieżkę i nazwę. Po odczytaniu pliku możesz go skompilować do innego pliku (który musi być wykonywalny w systemie) lub uruchomić go bezpośrednio. Jeśli
$LANG
brakuje możliwości odczytu plików, możesz wybrać inny sposób odczytu w odpowiednim kodzie$LANG
. Nie możesz wybrać$LANG
podzbioru innego języka, ale z usuniętymi możliwościami odczytu plików. - Obowiązują zwykłe zasady gry w golfa. To znaczy: Twój osobisty język dla zwierząt domowych, który wymyśliłeś tylko po to, aby rozwiązać to wyzwanie, jest zabroniony, jeśli rozwiązanie stanie się trywialne przy jego użyciu (np. Zdefiniowanie programu jednoznakowego, który dokładnie implementuje rozwiązanie). Zachęca się do nadużywania zasad.