Program A :
"iQ ²¯24
G²õ@i'#+Xd"iQ ²¯24
G²õ@i'#+Xd
B programı 8kB'nin üzerinde, bağlantı koptuğu için her şeyi yapıştıramayacağım kadar uzun. İşte bir örnek:
#þ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#ÿ"iQ ²¯24
G²õ@i'#+Xd"iQ ²,#Ā"iQ ²¯24
G²õ@i'#+Xd"iQ ²
NUL
Çalışmak için bir bayt almak için bir yol bulamadım , bu nedenle B programında yalnızca 255 benzersiz karakter var. Program B, esasen, her seferinde tek bir ilgisiz baytın değiştirildiği ve ilk 254 uygulamasının göz ardı edildiği tek bir programın 255 kopyasından oluşur.
Açıklama için, A'nın bu basitleştirilmiş sürümüyle başlayacağım, böylece ortaya çıkan B'nin tartışılması daha kolay olur.
"iQ ²¯23
3õ@i'#+Xd"iQ ²¯23
3õ@i'#+Xd
Bu program, yük taşıma kapasitesine sahip temel Japt quine'i temel almaktadır . Başlangıçtaki dize, programın geri kalanının bir kopyasını içerir, iQ ²
bir teklif ekler ve tüm programın bir dize gösterimini oluşturmak için kopyalar ve ardından ¯23
kendini ve ondan sonraki her şeyi keser. Sonuçta ortaya çıkan dize, Program A'yı veren bir programdır :
"iQ ²¯23
3õ@i'#+Xd"iQ ²
Bu dizgiyi şöyle ifade edeceğim U
.
A'nın son satırı, U
her seferinde küçük bir değişiklikle birkaç kez çoğalır. Spesifik olarak, her bir dizi için X
aralığında [1...3]
bu çıktılar "#c" + U
burada c
charCode olan karakter X
. Bu her biri arasında yazdırılamayan bayt var ki bizim Basitleştirilmiş A (notun çıktısı yani Japt varsayılan davranışı, çıkış olanlar hiçbir tırnak dizeleri ve virgülle ayırarak etmektir #
ve "iQ
:
#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²,#"iQ ²¯23
3õ@i'#+Xd"iQ ²
Buna Basitleştirilmiş B diyoruz .
Basitleştirilmiş B, #c
ve arasında değişen basit bir yapıya sahiptir U
. Neyse ki bu cevap için, her biri #c
ve U
virgülle ayrılmış olarak kabul edilir ve bu durumda bunun davranışı, sonuncusu hariç her şey U
çıktısı üzerinde hiçbir etkisi olmaz. Sadeleştirilmiş B'nin çıktıyı etkileyen tek kısmı şudur:
"iQ ²¯23
3õ@i'#+Xd"iQ ²
U
Zaten benzer olan çıktıları zaten biliyoruz.
Basitleştirilmiş A ve Program A arasındaki tek fark, aralık [1...3]
için kopya oluşturmak yerine gerçek programın aralık için kopya oluşturmasıdır [1...256]
. Bu, #c
her biri farklı bir karaktere sahip 256 sürümle sonuçlanır , ancak "Ā" son sürümü çok baytlık bir karakterdir, bu nedenle benzersiz baytlar eklemez, ancak sonuncusu dışındaki her şey U
hala yoksayılır.