Twoim zadaniem jest zbudowanie tłumacza na bezużyteczny język:
Oto wymagania funkcjonalne:
- Wszystkie opisane polecenia powinny zostać zaakceptowane przez tłumacza.
NO.
,NOOP
IINCLUDE-xxx
musi być honorowane.DONTUSEME(n)
musi mieć datę bazową, aby można ją było łatwo skonfigurować do czegoś bardziej rozsądnego do celów testowych.INCLUDE-xxx
musi być w stanie wygenerować dowolne polecenie z mniej więcej takim samym prawdopodobieństwem. Jeśli generuje aDONTUSEME(n)
, powinien losowo wybrać małą wartość dla n.DONTUSEME(n)
Windows powinien przetrwaćNO.
instrukcję. Wskazówka: spawn nowy proces dla tych okien.BOOM!
iKABOOM!
musi zrobić coś złego i przerażającego, iKABOOM!
musi być gorszy niżBOOM!
. Ale nie należy tego traktować zbyt poważnie, więc nie powinno to być coś destrukcyjnego, nadmiernie zakłócającego lub trudnego do usunięcia. Proszę, nie, nie i nie zmuszaj tych instrukcji do uruchomieniarm -rf \
polecenia, uruchomienia bomby widełkowej, zainstalowania złośliwego oprogramowania, uszkodzenia danych w systemie plików, publikowania lub pobierania nieodpowiednich treści z Internetu lub jakichkolwiek innych rzeczy wyraźnie obelżywych.TURINGVSALONZO
powinien działać tak, jakby faktycznie robił to, co powinien. Wskazówka: niech losowo decyduje, czy będzie spał przez bardzo długi czas, czy przez krótki czas, czy na zawsze.- Wszystkie inne predefiniowane instrukcje powinny robić coś innego niż wyżej wymienione instrukcje i różnić się od siebie, ale nigdy nie mogą być gorsze niż
BOOM!
lubKABOOM!
. To, co dokładnie robią, zależy od Ciebie, ale prosta implementacja po prostu wyświetli komunikat o błędzie lub inny tekst. - Należy zapewnić użytkownikowi łatwy sposób udostępnienia programu, który byłby uruchamiany przez tłumacza. tj. Czytanie zwykłego tekstu z pliku lub z
stdin
jest w porządku. Czytanie go z zaszyfrowanego pliku gdzieś w Internecie nie jest.
Opcjonalny:
- Możesz wymyślić kilka nowych poleceń, jeśli chcesz, ale powinny one podlegać tym samym regułom, co inne. Nie używaj tego celu obejścia ograniczeń w
BOOM!
aKABOOM!
lub pokonaćDONTUSEME(n)
. A jeśli wymyślisz nowe polecenia, wyjaśnij, co oni robią. - Powinieneś pomyśleć o tym, co robi interpreter, jeśli odbiera dane wejściowe za pomocą nieznanych poleceń (lub nawet całkowicie niemożliwych do rozdzielenia losowych bajtów bełkot).
- Chociaż żadna instrukcja nie powinna pokonać
DONTUSEME(n)
polecenia, możesz dodać dla niego przełącznik „zabicia”. Tylko nie ujawniaj tego w języku.
Mamy kilka niefunkcjonalnych wymagań, aby uniknąć nadużyć:
- Twoje zgłoszenie musi być jak najbardziej kompletne i automatycznie przechowywane. Oznacza to, że nie powinien to być po prostu jakiś instalator lub wyraźnie niekompletny program. W ten sposób pobieranie i używanie bibliotek takich jak jQuery lub pakiety z maven central jest w porządku, ale pobieranie dowolnego kodu i pakietów z własnego serwera nie jest możliwe.
- Wpis nie powinien zawierać żadnych treści z tej samej strony ani z kopii lustrzanej ani kopii tej strony w celu dokonania refleksji lub w jakimkolwiek innym celu. Jest to niezbędne, aby uniknąć sytuacji, w której program próbuje odczytać odpowiedzi innych uczestników na to pytanie lub w jakikolwiek sposób zakłócić pytanie lub odpowiedzi.
- Twój interpreter powinien być niezmienny i nie może samodzielnie modyfikować ani modyfikować pliku wejściowego. Ale tworzenie zmutowanej kopii interpretera lub pliku wejściowego bez zmiany oryginału jest w porządku.
I wreszcie, biorąc pod uwagę, że:
- Oczekuje się, że programy zawarte w odpowiedziach będą zupełnie bezużyteczne, nawet jeśli będą w pełni zgodne;
- Język jest (celowo) bardzo nieokreślony, a osoby udzielające odpowiedzi mają wiele swobód do podjęcia i są zachęcane do korzystania z nich;
- Wymagania i możliwe wdrożenia mają wiele subiektywnych punktów;
- Celem tego jest po prostu trochę zabawy i kreatywności.
To konkurs popularności i wygrywa najbardziej pozytywna odpowiedź w pełni zgodna z zasadami! Więc nie musisz grać w golfa ani zaciemniać swojej odpowiedzi (ale możesz to zrobić, jeśli chcesz). Pamiętaj tylko, aby opublikować coś oryginalnego i kreatywnego, aby zasłużyć na opinie, tzn. Nie publikuj kiepskich nudnych wpisów.
popularity-contest
interpreter
Victor Stafusa
źródło
źródło
Odpowiedzi:
TI-BASIC
Istnieje przycisk zabicia
DONTUSEME
, czy możesz dowiedzieć się, który to jest? :)źródło
:Goto 1
oznacza, żeBOOM!
jest to po prostu zakaz?INCLUDE-
.HTML + JavaScript + jQuery + jQuery UI
Dane wejściowe należy podać w polu tekstowym i sformatować jako każde polecenie w wierszu. W poleceniach nie jest rozróżniana wielkość liter. Wszystkie polecenia zostały w pełni zaimplementowane. Mam nadzieję, że ci się spodoba.
Możesz spróbować na http://jsfiddle.net/bCBfk/
Ma jedno nowe polecenie:
Inne spojlery:
źródło