Musisz napisać program lub funkcję, która, gdy dali niepusty ciąg S z N znaków ASCII druku † , wyprowadza program, który zakończy się z kodem wyjścia C , gdzie C jest na kod ASCII w pozycji 0 w S . Ten program piszesz dodatkowo wyjście program P , tak, że po uruchomieniu, to wychodzi z kodem wyjścia C " , gdzie C ' jest na kod ASCII w pozycji 1 w S . Program P wygeneruje inny program P ′ . Ten proces powtarza się, dopóki w S nie pozostaną żadne znaki. Po wykonaniu tej czynności nie musisz nic generować, a następnie opcjonalny nowy wiersz; i powinien wyjść z kodem wyjścia 0.
† Znaki pomiędzy 0x20i 0x7ewłącznie.
Kilka innych zasad:
- Programy samomodyfikujące są niedozwolone: musisz wyprowadzić źródło do STDOUT (lub początkowo zwrócić wartość)
- Nie możesz odczytać własnego kodu źródłowego.
Zwycięży najkrótszy taki program w bajtach.
Do niektórych podstawowych testów można użyć tego skryptu ruby . (Pierwszy argument to sposób wywoływania skryptu, drugi to program, a trzeci to ciąg wejściowy.)
Przykład hipotetyczny
Powiedz, że program jest FOO. Gdy podano ciąg „ABC”, wyświetla wynik BARA. Ten program kończy działanie z kodem 65i wyjściami BARB. To z kolei kończy się wraz z kodem 66i wyjściami BARC. Ten program kończy działanie z kodem 67i wyjściami BAR!. To nic nie wyprowadza i kończy działanie wraz z kodem 0.
33 throwdowolną liczbę. Używasz negatywów dla poziomu systemu operacyjnego, a przesunięcie wynosi -512. Też bardzo nie lubię, ale szukam tutaj: Complang.tuwien.ac.at/forth/gforth/Docs-html/...
0to sukces. tio.run/nexus/…