Napisz program, używając tylko drukowalnych znaków ASCII, które nie wymagają wprowadzania danych. Dla odniesienia, oto 95 drukowanych znaków ASCII w kolejności:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Kiedy twój program jest uruchomiony, powinien wypisać 0
(plus opcjonalny końcowy znak nowej linii) na standardowe wyjście, a następnie zakończyć normalnie.
Gdy każdy znak w twoim programie zostanie zastąpiony znakiem N spacje po prawej stronie w drukowanym ASCII, zapętlając się od ~
do spacji, wynikowy drukowalny ciąg ASCII będzie idealnie działał w programie w tym samym języku, który nie przyjmuje danych wejściowych i wyjściowych N (plus opcjonalny końcowy znak nowej linii) do stdout, a następnie kończy się normalnie, dla N = 1 do 94.
Na przykład, jeśli twój oryginalny program był
@Cat~(88 !)
uruchomienie powinno wypisać 0
i przesunąć wszystkie znaki w górę skali ASCII do druku o jeden
ADbu )99!"*
powinien dać inny program, który wyprowadza 1
. Powtórzenie tego będzie idealnie skutkować powstaniem innego programu2
BEcv!*::"#+
i tak dalej z 3 i 4 itd. aż do momentu przesunięcia 94 razy
?B`s}'77~ (
który idealnie jest programem, który generuje 94
.
Ulga polega na tym, że jest to tylko idealne zachowanie. Twój program i jego 94 pochodne nie wszystkie muszą działać, ale im więcej, to od samego początku, tym lepiej. (Programy, które nie działają, mogą mieć jakiekolwiek działanie).
Punktacja
Twój wynik to liczba kolejnych programów, które zaczynają się od oryginalnego (tego, który wypisuje 0
), które działają, tj. Poprawnie wypisują odpowiadające im N. Odpowiedź z najwyższym wynikiem (maksymalnie 95) wygrywa. W przypadku remisu wygrywa program o najkrótszej długości w bajtach.
Na przykład, jeśli @Cat~(88 !)
wyjście 0
i ADbu )99!"*
wyjście 1
ale BEcv!*::"#+
błędami, wówczas wynik byłby 2. To 2 nawet jeśli ?B`s}'77~ (
precyzyjnie wyjścia 94
i nawet jeśli wszystkie programy dla n = 30 do 40 lat pracował. Zliczana jest tylko kolejna liczba działających programów, zaczynając od zera.
Notatki
- Aby zwalczyć potencjalną rywalizację i luki, konkurencyjne odpowiedzi muszą wypisywać swoje liczby dziesiętne bez zer lub znaków wiodących lub kropek dziesiętnych (tj. Zwykłe
0
1
2
...94
). - Języki, które używają różnych baz lub formatów liczb są dozwolone, ale nie mogą wygrać.
- Obecność opcjonalnego końcowego znaku nowej linii nie musi być spójna między programami.
- Funkcje i polecenia REPL są niedozwolone, tylko pełne programy.
źródło
ans = 0
?0
wydrukować zwykłym drukiem na standardowe wyjście. Możesz jednak udzielić niekonkurencyjnej odpowiedzi.Odpowiedzi:
Oo! , 95 programów,
1999214066 bajtówNajłatwiejszym sposobem na wykonanie tego wyzwania jest użycie tokenizowanego języka, który nie potrzebuje znaków nowej linii i ignoruje nieprawidłowe tokeny.
Testowane przy użyciu tego interpretera *. Zakłada 8-bitowe komórki dla dodatkowej golfisty. Programy nakładają się również nieznacznie, aby zaoszczędzić niektóre bajty.
* Ten tłumacz ma dziwne dziwactwo, w którym ostatni token potrzebuje znaku po zarejestrowaniu, co ma wpływ
n = 62
. Są 8-bitowi tłumacze offline bez tego dziwactwa, ale był to najlepszy internetowy, jaki udało mi się znaleźć.źródło
PHP, 95 programów,
24392063 bajtówWymaga włączenia opcji output_buffering lub niektórych wartości, takich jak 4096. Domyślnie 4096 dla usługi internetowej (ale nie CLI) przynajmniej dla mojej instalacji.
Doktor mówi, że
ob_clean
nic nie zwraca. Niemniej jednak zwróciło to prawdę.Przesunięte programy wyglądają następująco:
Wygenerowano przy użyciu tego programu CJam:
źródło
CJam , 10 programów, 1 bajt
Pomyślałem, że lepiej dodaję to od razu, zanim ktoś inny stanie się bezczelny i zrobi to: P.
Program CJam z tylko zwykłą liczbą wypisuje tę liczbę, więc jest to prosty sposób na uzyskanie 10 programów, które działają, a mianowicie:
0
,1
,2
,3
,4
,5
,6
,7
,8
, I9
.Kolejny program,
:
co nie dziwi, nie wyświetla danych wyjściowych,10
ale powoduje błąd „niedokończonego operatora”.To niewątpliwie działa w wielu językach.
źródło