Twoim wyzwaniem jest napisanie N fragmentów kodu tak, że kiedy pierwszy złączyć K ≥ 1 razem produkują numer K . Im wyższy N , tym lepiej. Oto haczyk: nie możesz użyć żadnej postaci więcej niż raz w swoich fragmentach.
Zasady
- Możesz użyć tego samego znaku wiele razy w jednym (i tylko jednym) fragmencie.
- Te fragmenty muszą być konkatenowane w kolejności, w jakiej są prezentowane , bez pomijania żadnych.
- Musisz napisać co najmniej dwa fragmenty.
- Wszystkie fragmenty muszą być w tym samym języku.
- Pamiętaj: fragmenty nie muszą być pełnymi programami ani funkcjami, ani nie muszą działać samodzielnie.
-1
jest poprawnym fragmentem kodu w Javie, np - Wszystkie wynikowe konkatenacje muszą generować odpowiednią wartość K.
- Zwycięzcą zostaje osoba o najwyższej wartości N. Tie-breaker to najkrótsza całkowita długość programu w bajtach.
Przykład
Załóżmy, że fragmenty były AD
, xc
, 123
, i ;l
. Następnie:
AD
powinien produkować1
ADxc
powinien produkować2
ADxc123
powinien produkować3
- i
ADxc123;l
powinien produkować4
.
Ten program uzyskałby wynik 4 .
number
code-challenge
source-layout
Conor O'Brien
źródło
źródło
1
postać „2”?Odpowiedzi:
Fragmenty w języku Python 3 , 1 112 056, 4 383 854 bajtów
Jest to bardzo podobne do odpowiedzi Python 2 na @ WheatWizard . Zacząłem nad tym pracować krótko przed opublikowaniem, ale uporządkowanie dziwactw Pythona dotyczących znaków spoza ASCII i długich linii zajęło trochę czasu. Odkryłem, że Python odczytuje wiersze 8191 bajtów naraz, a kiedy te 8191 bajtów zawierają tylko część znaku wielobajtowego, Python generuje błąd SyntaxError .
Pierwszy fragment korzysta z kodowania od najmniejszej liczby (odrębnych) znaków dla kompletności Turinga .
Ta potworność po prostu buduje następujący ciąg i wykonuje go.
Poniższe fragmenty mają długość dokładnie jednego znaku. Kolejne trzy znaki są
\n
,\r
i#
. Wszystkie pozostałe znaki Unicode (oprócz surogatów) następują w określonej kolejności, więc są wyrównane do granicy 8191 bajtów.Poniższy skrypt generuje odpowiednie programy dla wejścia k od 1 do 1112056 .
źródło
Perl 5, 50
091151 fragmentówPierwszy fragment:
Fragmenty od 2 do 26:B
przezZ
Fragmenty od 27 do 46:
a
doz
, z wyłączeniem znaków w „długości”Fragmenty od 47 do 56.:
0
do9
57. fragment kodu:_
Pozostałe fragmenty to 50 105 pojedynczych znaków Unicode, które Perl uważa za znaki „słowne”, z wyłączeniem 14 odrębnych znaków słownych w początkowym fragmencie, w dowolnej kolejności.Cóż, to była miła myśl, ale okazuje się, że po pewnej długości Perl podaje błąd „zbyt długi identyfikator”. To najdłuższy połączony program, który udało mi się przekonać Perla do strawienia:
Strona podręcznika perldiag mówi: „Przyszłe wersje Perla prawdopodobnie wyeliminują te arbitralne ograniczenia”, ale mój Perl 5.18 tego nie zrobił.
Wyjaśnienie:
W trybie innym niż ścisły Perl 5 interpretuje niecytowane ciągi znaków słownych jako „bez słów”, w zasadzie automatycznie je cytując. Zazwyczaj najlepiej ich unikać, ale z pewnością pomagają tutaj!
źródło
a-z
fragmenty najprawdopodobniej będą używać znaków z pierwszego fragmentu.length("length(
.Python 2 , wynik 32
Z kolejnych fragmentów
B
,C
,D
, ...Y
,Z
,u
,v
,w
,x
,y
,z
.W zdziwieniu dramatycznej ironii Python 3 obsługuje identyfikatory Unicode, co pozwoliłoby nam być bardzo głupim dzięki tej sztuczce - ale nie może się
print
bez nawiasów. Mógłbym również wcisnąć cyfry do identyfikatora, ale nie sądzę, że takie podejście jest fajnie wyciskać więcej.Wypróbuj online!
Python 2 , wynik 18, mniej cheat-y
Wypróbuj online!
źródło
JavaScript (ES6, V8 6.x),
5250298119526119638119683128781 fragmentów,88149147575179575631576121612789 bajtówDalej znajduje się urywek stosu, który generuje pełny program, ocenia go i tworzy łącze pobierania pliku. Ten fragment kodu będzie nadal generował lepsze odpowiedzi, ponieważ nowsze wersje Unicode są obsługiwane przez nowsze wersje JavaScript, które dodają nowe prawidłowe identyfikatory do języka.
Używanie tylko ASCII
Wyjaśnienie
Wykorzystuje to technikę metaprogramowania,
Proxy
aby włączyć pułapkę procedury obsługi get dla obiektu i uzyskać dostęp do nazwy właściwości jako łańcucha, zwracając identyfikatorlength / 2
jako jego wartość.Z pierwszym fragmentem rozpoczynającym się od
new Proxy({},{get:(n,{length:e})=>e>>(e/e)}).nn
, każdy dodatkowy dodany fragment zwiększa łańcuchlength
identyfikatora,2
upewniając się,.repeat()
że odpowiedni punkt kodowy dwukrotnie dla 2 bajtów utf-16 znaków i raz dla 4 bajtów utf-16 znaków.Identyfikatory w JavaScript
W specyfikacji ECMAScript an
IdentifierName
jest zdefiniowany za pomocą następującej gramatyki:Generowanie odpowiedzi
Początkowo za pomocą właściwości Unicode „ID_Continue” napisałem skrypt Node.js, który generuje pełną odpowiedź. Teraz jest to tylko skrypt po stronie klienta, który używa naiwnego
eval()
do testowania poprawnych znaków, iterując zamiast tego wszystkie punkty kodu Unicode:Uruchomienie
stat -f%z answer.js
daje liczbę bajtów 612802, ale odejmujemy 13 bajtów dlaconsole.log(
i zawijamy)
faktyczne przesłanie.Kodowanie
Źródło jest przechowywane jako utf-8, co znajduje odzwierciedlenie w ogromnej liczbie bajtów odpowiedzi. Dzieje się tak, ponieważ Node.js może uruchamiać tylko pliki źródłowe zakodowane w utf-8.
JavaScript wewnętrznie przechowuje ciągi znaków z kodowaniem utf-16, więc ciąg znaków „długość znaku” zwracany w JavaScript jest tak naprawdę tylko połową liczby bajtów ciągu zakodowanego w utf-16.
źródło
x
zamiast$
zwolnić go jako dodatkowy znak identyfikujący?Python 2 , wynik
610+3 dzięki pizzapantom 184
+1 dzięki WheatWizard
Wypróbuj online!
źródło
print int(True)
na just4/4
, możesz dodaćand 7
7, biorąc pod uwagę, że nie musisz drukować numeru, po prostu go „wyprodukuj”&2
zwiększy twój wynik o jeden, ponieważ&
ma wyższy priorytet niż^
, ale musisz jakoś zrobić liczbę 2. (Możesz użyć[[]==[]][[]<[]]<<[[]==[]][[]<[]]
)ord
był w konflikcieand
, ale naprawiłem toTI-Basic (seria 83, wersja OS 1.15 lub wyższa), wynik:
17181924(Tiebreaker: 53 bajty.)
Możesz uzyskać bardzo duży wynik, jak zwykle wykorzystując długość łańcucha: zacznij od (jak wskazuje @Scrooble) i dodawaj fragmenty pojedynczego tokena do końca. TI-Basic ma ich ponad 700, więc właściwie działa całkiem dobrze. Ale oto inne podejście:
length("A
length("length(
Zauważ, że TI-Basic jest tokenized, więc (dla przykładu)
e^(
komenda nie używa żadnego z bohaterówe
,^
,(
.Opiera się na nieudokumentowanej funkcji
sub(
polecenia: oprócz znajdowania podciągów można go również użyć do podzielenia liczby przez 100.To działa, jeśli jest uruchomiony na świeżym, kalkulator, który pozwala nam przypuszczać, że
X
,Y
,Z
są zerowe, że zmienne okna są ustawione do ich standardowych wartości, że kalkulator jest w trybie radian, i żerand
„s pierwsze trzy wyjścia będzie o0.943
,0.908
,0.146
.źródło
PowerShell , 25 bajtów, wynik 5
Snippet 1:
' '.count
wyjścia1
. Robi to, biorąc.count
ciąg znaków, który jest jeden, ponieważ istnieje tylko jeden ciąg. Wypróbuj online!Snippet 2: dane
*2
wyjściowe,2
ponieważ bierzemy1
poprzedni fragment i mnożymy go przez dwa Wypróbuj online!Snippet 3: dane
+!""
wyjściowe3
przez dodanie logicznej nie-pustego łańcucha. To domyślnie rzutuje pusty ciąg znaków na$true
, który ponownie jest domyślnie rzutowany1
, więc dodajemy jeden Wypróbuj online!Snippet 4: dane
-(-1)
wyjściowe4
po prostu odejmując jeden ujemny Wypróbuj online!Snippet 5: dane
|%{5}
wyjściowe5
poprzez pobranie poprzedniej liczby do pętli i każda iteracja tej pętli (tylko jedna, ponieważ jest tylko jedna liczba wejściowa)5
Wypróbuj online!Dzięki Janowi za alternatywny sposób wymyślenia
4
i sprytny sposób wymyślenia5
.źródło
' '.count*2+!""-(-1)|%{5}
na wynik 5?$_
środku|%{ }
. Dzięki!C, 10 fragmentów, 45 bajtów
Wypróbuj online!
źródło
MATL , wynik
815,64123 bajtów11,23ZP
było jego pomysłem, wraz ze zmianą3
sięI
na fragmencie 7.OO...N&
był jego pomysł.Więcej w przyszłości.Nie znam na pamięć funkcji MATL, więc musiałem tam i z powrotem iz powrotem w dokumentacji ... :)Wypróbuj online!
źródło
5Yy
jest miło! Już używamY
w 3, aby zdobyć drugą liczbę pierwszą :(OOOOOOON&
. Jeśli dodasz inne, prawdopodobnie powinien to być ostatni, ponieważ&
yyyyyyyy...
? Musiałem podwoić liczbę, 24,y
aby ją zduplikować 12 razy ...?d
. Jestem teraz na telefonie komórkowym, ale spróbujX#
debugować i wydrukować stosV , wynik 10
Wypróbuj online!
źródło
Galareta , 253 bajty, wynik 250
Kolejne fragmenty 1-znakowe:
Uwaga:
¶
może być również zastąpiony przez\n
, są one tym samym bajtem na stronie kodowej Jelly.Po dołączeniu wszystkich tych fragmentów możesz dodać fragment 2-znakowy
”‘
.+1 dzięki Dennisowi .
Wypróbuj online!
źródło
Lenguage , 1 112 064 fragmentów
N p fragment składa się z 2 3n-1 powtórzeń n -tego nie zastępczego postaci UNICODE, włącznie z 1 112 064 TH , a ostatni nie zastępczym postać obecnego standardu Unicode.
Dla uproszczenia dane wyjściowe są jednostkowe (używając bajtu zerowego jako cyfry). Dziesiętny jest możliwy, ale spowoduje to, że programy będą jeszcze dłuższe. Za pomocą unary możemy przetestować pierwsze programy.
Dla n = 1 otrzymujemy 4 powtórzenia U + 0000 . Jest to ekwiwalent programu pieprzenia mózgów
.
, który drukuje jeden bajt zerowy.Dla n = 2 otrzymujemy 32 powtórzenia U + 0001 , w sumie 36 znaków. Jest to ekwiwalent programu pieprzenia mózgów
..
, który drukuje dwa bajty zerowe.Dla n = 3 otrzymujemy 256 powtórzeń U + 0002 , w sumie 292 znaków. Jest to ekwiwalent programu pieprzenia mózgów
...
, który drukuje trzy bajty zerowe.I tak dalej, do n = 1 112 064 .
źródło
'+'*(48 + d) +'.>'
dla każdej cyfry dziesiętnej n osiągnęłoby ten sam wynik. Trudniej to opisać.BASIC (ZX Spectrum), wynik 244 (nowy wynik 247) [czy to oszustwo?]
Fragment 1:
Snippet 2:
:
Fragment 3:
REM
Fragmenty 4-244: Fragmenty jednoznakowe, wykorzystujące wszystkie znaki spoza fragmentów 1, 2 i 3.
Wyjaśnienie
Postacie
W Spectrum
PRINT
jest pojedynczy znak (kod 245). Fragment 1 wykorzystuje 11 różnych znaków:2
,3
,5
,6
,+
,-
,*
,(
,)
,PRINT
iPEEK
co widzisz jako przestrzenie są częścią znakówPRINT
iPEEK
tak nie była używana sama przestrzeń. Postanowiłem podać numer linii 2356, ponieważ są to jedyne cyfry obecne w kodzie.Znaki 13 i 14 są niedozwolone. Oznacza to, że dla fragmentów 2-244 pozostało 243 znaków, zaczynając od
:
iREM
unikając kodu, który mógłby powodować błędy lub robić cokolwiek innego.Jak to działa
Dlatego nie jestem pewien, czy ta odpowiedź pochodzi z książki.
23635 to miejsce w pamięci dla 16-bitowej zmiennej systemowej PROG, zapisanej jako LH. (Wartość wynosi zwykle 23755. Ale oprócz złego wyniku, jeśli tak się nie stanie, użycie tego numeru bezpośrednio, nawet jeśli skróciłoby kod, kosztowałoby mnie dodatkowe cyfry). Wartość PROG to lokalizacja pamięci gdzie sam program jest przechowywany. Pierwsze dwa bajty to numer linii przechowywany jako HL, kolejne dwa bajty to długość linii przechowywanej jako LH. W ten sposób program sprawdza długość własnej linii, więc należy odjąć coś odpowiedniego
Zapisywanie znaków
Biorąc pod uwagę sposób przechowywania liczb, linia mogła zakończyć się cyfrą -114, tak że fragment 1 wygenerowałby 1. Ale nie chciałem używać dodatkowych cyfr, więc zamiast tego zabrałem dwie 2-cyfrowe liczby, które następnie musiałem dodać do 122; 56 i 66 wypadły dobrze.
Kod jest nieco brzydki, ponieważ wszystkie zagnieżdżanie i obliczanie wartości PROG (
PEEK 23635+256*PEEK 23636
) dwukrotnie. Ale gdybym go zapisał, a następnie użył przechowywanej wartości, kosztowałoby to dodatkowe znaki / fragmenty - wiersz mógłby zacząć się takktóry użyłby 4 dodatkowe znaki:
LET
,p
,=
i:
.Może to skonstruuję tak, aby wszystkie liczby były obliczane na podstawie liczb, które używają tylko 1 cyfry i uzyskują 3 fragmenty.
EDYTOWAĆ:
Oto nowy fragment 1 (w ten sposób wyświetlana jest długa pojedyncza linia w Spectrum, więc jeśli chcesz przetestować kod, pomoże ci to sprawdzić, czy wpisałeś go poprawnie):
Mógłbym zdobyć kolejny fragment, unikając
+
i po prostu się z tym pogodzić-
. Nie zamierzam tego próbować, to wystarczyło na ciężką próbę.źródło
Klein 011 , 9 urywków
Snippet 1
Wypróbuj online!
Snippet 2
Wypróbuj online!
Snippet 3
Wypróbuj online!
Snippet 4
Wypróbuj online!
Snippet 5
Wypróbuj online!
Snippet 6
Wypróbuj online!
Snippet 7
Wypróbuj online!
Snippet 8
Wypróbuj online!
Snippet 9
Wypróbuj online!
Wyjaśnienie
To było naprawdę zabawne wyzwanie dla Kleina. Unikalna topologia Kleina pozwala na zrobienie wielu interesujących rzeczy. Jak można zauważyć, odpowiedzi 5-9 po prostu dodają wypełniacz (litery nie robią nic w Kleinie, więc użyłem ich jako wypełniacza) do kodu, aby rozciągnąć obwiednię. Powoduje to, że ip podąża inną ścieżką przez wcześniejsze części kodu ze względu na unikalną topologię Kleina.
Wyjaśnię później pełne wyjaśnienie, ale na razie jest to łatwiejsza do zrozumienia wersja programu, w której wszystkie litery zostały zastąpione literą
.
s.Wypróbuj online!
źródło
> <> , Wynik:
nieskończoność112 064-6 = 1 112 058Snippet 1 (6 bajtów)
Ten fragment wyświetla liczbę znaków po; plus jeden. Można to rozszerzyć do
nieskończonejilości fragmentów jednej postaci. Szybkie google mówi mi, że istnieje 1 112 064 możliwych znaków Unicode, pomijając 6, których już użyłem.Spróbuj It Online
źródło
R , wynik: 79
Podziękowania za inspirację dla Seela Perla ; narusza to niektóre dziwactwa interpretera R.
Pierwszy fragment:
kolejne fragmenty to znaki w:
Wypróbuj online!
scan
Funkcja odczytuje dane z pliku""
która domyślniestdin()
.Dokumenty
stdin()
wskazują, że:Dlatego kolejne dane stają się plikiem. Można to trywialnie rozszerzyć i może współpracować z wieloma różnymi kodowaniami.
źródło
Pyke , 256 bajtów, wynik 254
Należy pamiętać, że są to kody szesnastkowe rzeczywistych bajtów, oddzielone spacjami, ponieważ zawiera on bajt null (
\x00
).Początkowy fragment kodu:
Kolejne fragmenty 1-znakowe:
Wypróbuj tutaj!
źródło
Fragmenty Java 8, 7 (19 bajtów)
Tylko początek, będę kontynuować prace nad tym.
Wypróbuj tutaj.
Wyjaśnienie:
Pierwszeństwo wykonania może być chyba jaśniejsze, gdy dodam nawias:
a*b
: Pomnóża
przezb
~a
:-a-1
a>b?x:y
:if(a>b){ x }else{ y }
a|b
: Bitowo-LUBa
zb
a^b
: Bitowy-XORa
zb
a%b
:a
modulo-b
źródło
Python 2Fragmenty w , 110
Oto pełny fragment kodu:
Wypróbuj online!
Pierwszy fragment to
A następnie kolejne 109 urywków to kolejne 109 bajtów.
To dość „oszukańcze”, jak to ujęła Lynn. Pierwszy fragment otwiera plik i odejmuje 44 od jego długości, a następnie każdy inny fragment dodaje 1 do długości pliku bez zmiany logiki programu jako całości. zwiększając w ten sposób wynik produkcji o 1.
źródło
dc , wynik 13, 58 bajtów
Wypróbuj online! (Uwaga, wersja TIO dodaje
f
po każdym fragmencie, aby wydrukować cały stos, pokazując, że każdy fragment pozostawia tylko jedną wartość na stosie; zapomniałem również o wiodącym miejscu na ostatnim fragmencie, który nie ma znaczenia funkcjonalnego, gdy są w podziale według podziałów linii, ale nie wlicza się do użycia mojej postaci)Każda dodatkowa konkatenacja fragmentu pozostawia żądaną wartość i tylko żądaną wartość na stosie. Po osiągnięciu 12, miałem dość sposobów na zjedzenie stosu. Próbowałem wcześnie korzystać z operacji matematycznych, ponieważ pochłaniają one stos, a gdy wchodzimy w większe liczby, trudniej jest nim zarządzać. Kiedy wszystko jest już powiedziane i zrobione, pozostała mi tylko cyfra 0 i bardzo mało przeszkadza w stosach, więc myślę, że 13 jest bardzo bliskie maksymalizacji. Jestem pewien, że istnieje wiele podobnych (i prawdopodobnie krótszych) sposobów na osiągnięcie tego w DC, ten rodzaj właśnie się sprawdził. Zauważ, że cygwin obsługuje AF zmieszany z 0-9 inaczej niż większość wersji dc,
44C4r/CC 4//
działa na końcowy fragment w cygwin.źródło
Pyth , 124 fragmenty
Wypróbuj online!
Znaki niedrukowalne uciekały przy użyciu trzech znaków drukowalnych (
x..
). Pierwszy fragment ma długość trzech bajtów, a następnie każdy fragment rośnie o jeden.źródło
Beatnik , 22 bajty, wynik 20
Zakładając, że słowo „snippet” pozwala na przesunięcie wartości na stosie.
źródło
Oktawa, wynik 86
Śledzony przez:
Wykorzystuje to fakt, że Octave traktuje wszystko po nazwie funkcji jako ciąg wejściowy.
nnz n
Zwraca więc liczbę niezerowych elementów w ciągu'n'
. Przechodzimy do 86, dodając inne drukowalne znaki ASCII.',"%#
nie działaźródło
APL (Dyalog) , wynik 12
Wynik +1 dzięki @dzaima
Fragmenty od pierwszego do trzeciego:
Następnie każdy z nich
234567890
.Wypróbuj online!
źródło
Julia 0.6, 111217
Poniższy skrypt tworzy pełny program:
Wyjaśnienie
Makro
po których następują wszystkie wyraźne znaki Unicode dozwolone w identyfikatorach, obliczone z
isidentifier
. Niektóre znaki diakrytyczne psują się, więc je usunąłem.źródło
TeX, wynik 61 (ewentualnie 190)
Pierwszy fragment:
Pozostałe 60 fragmentów: w dowolnej kolejności, z których każdy zawiera jeden znak z
Objaśnienie:,
\len
który jest wywoływany na końcu, konwertuje sekwencję kontrolną na ciąg, każdy znak (w tym\
) jest jednym znakiem tokena tego ciągu; następnie\glen
pożera żeton\
, a następnie\tlen
liczy pozostałe żetony. W związku z tym wyprowadza długość tej sekwencji kontrolnej (bez uwzględnienia\
).Znaki z innych fragmentów rozszerzają sekwencję kontrolną, która początkowo jest sprawiedliwa
\t
. Wieloznakowa sekwencja kontrolna musi składać się wyłącznie z liter, ale wszystkie one liczą się jako litery, ponieważ wszystkie mają przypisany kod kategorii 11 (używając kodów ASCII, aby same znaki nie pojawiały się w pierwszym fragmencie).Postanowiłem użyć kodów ósemkowych dla niektórych znaków, które kosztowały mnie jeden symbol,
'
ale zapisałem mi dwie cyfry, 8 i 9, więc zyskałem jeden fragment kodu. Być może mógłbym zyskać jeszcze kilka, gdybym nie potrzebował\expandafter
.Wydajność
Możliwa zmiana: zawiń
\number\count1
w,\message{}
aby dane wyjściowe nie trafiały do.dvi
danych wyjściowych, ale do danych wyjściowych konsoli i.log
. To nie kosztuje żadnych dodatkowych liter.190
Niestety, TeX współpracuje z ASCII, a nie z Unicode (czy teraz?), Ale moje rozwiązanie mogłoby zostać rozszerzone o 129 dodatkowych fragmentów jednoznakowych zawierających znaki o kodach 127-255. Może nawet niektóre postacie przed 32. Postać 32 (spacja) nie działała, w przeciwnym razie umieściłbym ją również we fragmencie - nie potrzebowałem go w pierwszym fragmencie. Oczywiście, każdy z tych dodatkowych znaków musiałby zostać
\catcode
wpisany do litery w pierwszym fragmencie.źródło
Pip, 57 bajtów, wynik = 16
Zauważ, że
<tab>
reprezentuje dosłowny znak tabulacji (ASCII 9). Wypróbuj online!Każdy fragment jest pełnym programem, który wyświetla żądaną liczbę. Większość z nich działa na zasadzie, że ostatnie wyrażenie w programie Pip jest automatycznie drukowane: na przykład we fragmencie 5 poprzedni kod jest oceniany, ale liczy się tylko część
5
. Wyjątkami są:RT9
(pierwiastek kwadratowy z 9), ale po fragmencie 2 faktycznie analizuje jako2RT9
(2. pierwiastek z 9) - co oczywiście oznacza to samo.y
zmiennej. Snippet 8 następnie wyświetla wartośćy
.o
(wstępnie zainicjalizowany do 1). Fragment 13 przyjmuje ten wynik i odejmujev
(wstępnie zainicjalizowany na -1).1
bez nowego wiersza (Ok=k
, gdziek=k
zwraca domyślną wartość prawdy wynoszącą 1), a następnie automatycznie drukuje6
.Inne interesujące rzeczy:
14
wartości pi."F"
z szesnastkowego.źródło
Zsh , wynik> 50 000 (1 112 046?), 16 + Σ (długości punktów kodowych UTF-8)
Zsh domyślnie obsługuje kodowanie wielobajtowe. Podstawowy fragment ma 18 unikalnych znaków, w sumie 34. Można do niego dodać każdy inny punkt kodowy (z wyjątkiem bajtu zerowego). Gdy to piszę, mój skrypt testuje je w punkcie kodowym ~ 50 000, całkowity rozmiar pliku 150 KB, przy szybkości około 30 fragmentów na sekundę. Uruchom tutaj mój pełny skrypt testowy. Możesz go dostosować, aby zaczynał od niektórych późniejszych punktów kodowych.
Wypróbuj pierwsze 2000 fragmentów online!
Przy użyciu tej techniki można uzyskać więcej fragmentów kodu .
źródło