Używanie 74 znaków z ciągu kapsuły czasu 2016
H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%
napisz fragmenty kodu N wszystkie w tym samym języku, w którym:
- Wyjścia pierwszego fragmentu kodu
1
. - Wyjścia drugiego fragmentu kodu
2
. - Wyjścia trzeciego fragmentu kodu
3
. - ... itd. ...
- Wyjście N-tego fragmentu kodu
N
(liczba, a nie litera).
„Fragment kodu” jest zdefiniowany jako dowolny z poniższych:
- Pełny program bez wymaganego wejścia, który normalnie wypisuje liczbę .
- Funkcja bez wymaganych argumentów, która normalnie wypisuje / zwraca liczbę .
- REPL wyrażenie zwracające liczbę.
(Możesz mieszać i dopasowywać te trzy warianty w swoich fragmentach N).
Znaki, których możesz używać w połączonym zestawie fragmentów N, to dokładnie 74 znaki kapsuły czasu oraz floor(N/2)
dodatkowe „bajtowe” znaki , których możesz używać w dowolnym miejscu.
Na przykład, kapsuła czasu zawiera trzy @
, więc w całych twoich N fragmentach może być tylko trzy @
, chyba że zdecydujesz się użyć niektórych z floor(N/2)
symboli wieloznacznych jako dodatkowych @
.
Tak więc, nie licząc symboli wieloznacznych, połączony zestaw znaków w twoich N fragmentach musi być podzbiorem 74 znaków kapsuły czasu. Ich łączna długość nie może przekraczać 74. Nie można ponownie używać znaków kapsułki czasu ani symboli wieloznacznych między fragmentami.
Notatki
Nie ma żadnych innych ograniczeń dotyczących długości fragmentu ani liczby symboli zastępczych, które mogą być użyte na jeden fragment.
Musisz napisać wszystkie fragmenty kodu od 1 do N. To nie jest 0 do N-1, ani k do N + k-1.
Fragmenty muszą być indywidualne, a nie jeden, który wyświetla listę
1, 2, 3, ..., N
.Dane wyjściowe mogą być zmiennoprzecinkowe jak
3.0
na miejscu3
i możesz użyć podstawy innej niż dziesiętna, jeśli jest to naturalna podstawa twojego języka . Musisz użyć tej samej bazy dla wszystkich urywków.Symbole wieloznaczne są liczone jako bajty w kodowaniu Twojego języka . Prawdopodobnie będzie to ASCII, ale np. Jeśli
∞
liczy się jako jeden bajt w twoim kodowaniu, możesz go użyć jako pojedynczego bajtu wieloznacznego.Możesz używać symboli wieloznacznych dla znaków wielobajtowych. np. zwykle
∞
ma trzy bajty, więc możesz użyć go we fragmencie, ale będzie to kosztować trzy bajty z symbolami wieloznacznymi.floor(N/2)
Nowe linie, takie jak
\r\n
mogą być uważane za jeden bajt.
Przykład
W Pythonie N = 4 jest możliwe tylko przy użyciu REPL. Istnieją floor(4/2) = 2
symbole wieloznaczne.
1
z kapsuły czasu to wyrażenie, które ewaluuje do1
.2
składa się z jednego znaku wieloznacznego, a mianowicie2
. Evals to2
.3
składa się również z jednego znaku wieloznacznego. Evals to3
. Nigdy więcej symboli wieloznacznych.4
jest na szczęście w kapsule czasu i ewaluuje4
.
Te fragmenty są krótkie i trywialne. Prawdziwa odpowiedź byłaby prawdopodobnie znacznie bardziej złożona.
(Pięć i więcej w Pythonie może z pewnością być możliwe, ale zostawię to profesjonalistom.)
Punktacja
Odpowiedź z najwyższymi N wygrywa; tzn. ten, który wspina się po drabinie liczb całkowitych najwyższy.
W przypadku remisu wygrywa odpowiedź wykorzystująca najmniej bajtów symboli zastępczych.
W przypadku remisu wygrywa odpowiedź, w której użyto najmniej skumulowanych znaków.
Jeśli nadal jest remis, wygrywa wcześniejsza odpowiedź.
07
to samo co 7
?
-
ani n
...
4
prawidłowy fragment zwraca 4, w starszych wersjach Perla, które nie mają REPL?)