Program A :
"iQ ²¯24
G²õ@i'#+Xd"iQ ²¯24
G²õ@i'#+Xd
Program B ma ponad 8kB długości, tak długo, że link się łamie, więc nie wkleję całego. Oto próbka:
#þ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#ÿ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#Ā"iQ ²¯24
G²õ@i'#+Xd"iQ ²
Nie mogłem znaleźć sposobu na uruchomienie NUL
bajtu, dlatego program B ma tylko 255 unikalnych znaków. Program B zasadniczo składa się z 255 kopii jednego programu, w którym za każdym razem zmienia się jeden nieistotny bajt, a pierwsze 254 wykonania są ignorowane.
Dla wyjaśnienia zacznę od tej uproszczonej wersji A, aby łatwiej było omówić wynikowy B.
"iQ ²¯23
3õ@i'#+Xd"iQ ²¯23
3õ@i'#+Xd
Program ten oparty jest na podstawowej, przystosowanej do obciążenia Jine quine . Ciąg na początku zawiera duplikat reszty programu, iQ ²
wstawia cytat i duplikuje się, aby utworzyć ciąg reprezentujący cały program, a następnie ¯23
przycina siebie i wszystko po nim. Powstały ciąg jest programem, który wysyła program A :
"iQ ²¯23
3õ@i'#+Xd"iQ ²
Odniosę się do tego ciągu jako U
.
Ostatnia linia A powiela U
kilka razy za każdym razem z niewielką zmianą. W szczególności dla każdej liczby X
w zakresie [1...3]
wypisuje, "#c" + U
gdzie c
jest znak z kodem znaków X
. Domyślnym działaniem Japt jest wypisywanie tych ciągów bez znaków cudzysłowu i oddzielanie ich przecinkami, więc jest to wynik naszego Uproszczonego A (zwróć uwagę, że między każdym #
a "iQ
:
#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²
Zadzwonimy ten uproszczony B .
Uproszczony B ma prostą strukturę, na przemian z #c
i U
. Na szczęście do tej odpowiedzi, każdy #c
i U
jest traktowany jako oddzielone przecinkiem, aw tej sytuacji zachowanie to jest wszystko z wyjątkiem bardzo ostatnio U
nie ma wpływu na wyjściu. Jedyną częścią Uproszczonego B, która wpływa na wynik, jest:
"iQ ²¯23
3õ@i'#+Xd"iQ ²
Co jest identyczne z U
tym, że znamy już wyniki Uproszczone A.
Jedyna różnica między uproszczonym A i programem A polega na tym, że zamiast generować kopie dla zakresu, [1...3]
prawdziwy program generuje kopie dla zakresu [1...256]
. To powoduje, że 256 wersji #c
każdej z nich ma inny znak, chociaż ostatnia wersja „Ā” jest znakiem wielobajtowym, więc nie dodaje żadnych unikalnych bajtów, ale wszystko oprócz ostatniego U
jest nadal ignorowane.