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ź.
źródło
4
prawidłowy fragment zwraca 4, w starszych wersjach Perla, które nie mają REPL?)07
to samo co7
?-
anin
...Odpowiedzi:
CJam , 25 fragmentów, 12 symboli wieloznacznych, 64 bajty
Wypróbuj online!
Symbole wieloznaczne:
Czuję, że muszę szybko pisać, zanim Dennis mnie obezwładni.
źródło
CJam , 23 fragmenty, 11 symboli wieloznacznych, 45 bajtów
Wypróbuj online! | licznik wieloznaczny (zignoruj znaki nowego wiersza)
źródło
JavaScript, 10 liczb, 5 symboli wieloznacznych
Pozostałe postacie:
!!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~
Wykorzystano 5/5 dodatkowych znaków:
37680
Programy:
1
3
4
4|!``
6
7
8
9
0xA
Miałem nadzieję, że jeden z ciągów, który mógłbym użyć,
\xAB
będzie liczbą, ale niestety żadna z kombinacji, które wypróbowałem, nie przyniosłaby żadnej.^
Charakter (XOR) będzie również interesujące w użyciu, ale w tej chwili nie widzę żadnych możliwości, gdzie może być wykorzystywane do wytwarzania dużej liczby mało.Jeśli zobaczysz inną wykonalną kombinację, daj mi znać w komentarzach.
Edycja: Dodano # 10 dzięki Arnauldowi
źródło
10. 0xA
(z0
przyznaniem nowej wieloznacznej karty za osiągnięcie 10)(Q=!``)|Q
dla 1, aby dostać1
gdzieś dodatkową . Nie jestem jednak pewien, czy to pomożePyth, 12 fragmentów, 20 bajtów (6 symboli wieloznacznych)
Znajdź pierwszą liczbę, w której root (n, n) jest prawdziwy, zaczynając od 1. Wyjście: 1
Nie podwójnie
{}
. Wyjście: 2Symbol wieloznaczny nr 1. Wyjście: 3
Wyjście: 4.
Symbol wieloznaczny # 2. Wyjście: 5
Symbol wieloznaczny # 3. Wyjście: 6
Symbol wieloznaczny # 4. Wyjście: 7
Symbol wieloznaczny # 5. Wyjście: 8
Wyjście: 9
Zmienna zinicjalizowana. Wyjście: 10
Dziesięć plus nie zero. Wyjście: 11
Symbol wieloznaczny # 6 (
2
). Wyjście: 12źródło
Oktawa, 6 liczb, 3 symbole wieloznaczne
I jeszcze
1
,9
i*
lewo, ale nie wiem, czy to pomoże mi dużo. Zobaczę, co mogę z nimi zrobić :)Niełatwo zdobyć wiele liczb, gdy nie używasz Esolanga. Mam nadzieję, że uda mi się zdobyć jeszcze jedną lub dwie, ale myślę, że będzie ciężko.
źródło
Pushy , 10 liczb (4 symbole wieloznaczne)
Wszystkie są fragmentami, które pozostawiają wynik na stosie. Możesz to sprawdzić w tłumaczu online , dołączając
#
do każdego fragmentu kodu (aby wydrukować numer)Ta odpowiedź nie jest jeszcze kompletna - choć wydaje się mało prawdopodobne, że posunę się znacznie dalej.
źródło
05AB1E, 12 liczb, 6 symboli wieloznacznych
źródło
Sześciokąty , 6 liczb, 3 symbole wieloznaczne, 23 bajty
Wypróbuj online!
Cały szósty program składa się z symboli wieloznacznych.
Jedyny naprawdę interesujący to
3
. Chociaż mógłbym to zrobić jako4(!@
, to pozostawiłoby mnie bez4
generowania5
łatwo, więc wybrałem to:Ze względu na to
|
, że)
pierwsza linia jest uruchamiana dwa razy, zanim IP zawinie się w prawym rogu.$
pomija@
, a następnie\
przekierowuje adres IP po)
raz trzeci. Adres IP zawija się w lewym dolnym rogu,!
drukuje3
i@
kończy działanie programu.Nie sądzę, aby możliwe było więcej niż 6 urywków, ponieważ istnieje tylko 5 poleceń drukowania (
!!!!!
) i 5 poleceń, których można użyć do zakończenia programu (@@@%:
). Tak więc po piątym fragmencie potrzebujemy co najmniej dwóch symboli wieloznacznych na fragment. Dlatego nawet jeśli udało mi się uzyskać6
bez użycia symbolu wieloznacznego, nie byłoby wystarczającej liczby symboli wieloznacznych, aby przejść do fragmentu siódmego.źródło
JavaScript, 8 liczb, 4 symbole wieloznaczne
Może spróbuję ponownie później - Tracę trochę postaci na 2 i 6, kiedy do tego dojdziesz.
źródło
Befunge-98, 4 fragmenty, 18 bajtów, 2 symbole wieloznaczne
Pozostałe znaki:
!!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~
Wątpię, czy więcej jest możliwych, ponieważ każdy dodatkowy program będzie wymagał postaci wyjściowej, a wszystkie
.,
są już zużyte. Jeśli mogę wymyślić sposób na wykonanie 3 i 5 bez znaku wieloznacznego, to jest to możliwe.Ostatni program ostatecznie zakończy się z powodu zapełnienia stosu.
A
iH
bez załadowanych odcisków palców odbije się, a program będzie naciskał cyfry 9.źródło
%
.00%
jest ważny w Befunge-98 i daje wynik 0 (lub prosi użytkownika o wynik w Befunge-93.{
może się odwrócić, jeśli zabraknie pamięci; nic nie mówi się o normalnym wypychaniu, a wszyscy tłumacze wydają się zawieść w OOM, ale wyraźnie ograniczenia pamięci są rozważane w specyfikacji języka.p
postaci, ale zajęłoby to trochę pracy. Możesz zrobić,e%9
aby uzyskać 5, ale potrzebujesz sposobu, aby zarówno wydrukować, jak i zakończyć program, więc wątpięSmileBASIC, 12 fragmentów, 5 symboli wieloznacznych, 31 bajtów
Mógłbym również użyć zmiennej zamiast
.
(zmienne zaczynają się od 0) i zmiennej łańcuchowej (jakQ$
) zamiast@Q
Użyte znaki:
!!!#&*+...1449@AHILQQTem||
Używane symbole wieloznaczne:
67813
nieużywane znaki:
!!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~
źródło