TovTovTov ( Tavuk mutasyonu): 810147050 bayt
Aşağıda önerilen iki çözüm vardır: Çok sayıda bayt gerektiren soruya bir tam çözüm ve ikinci bir kısmi çözüm ( her biri farklı bir yaklaşım izleyen , yalnızca 484 bayt gerektiren yalnızca N + N ve N * N parçalarını çözme ) serin hileler kümesi! :)
1. Tam çözüm (810147050 bayt)
Kullanıldığında TovTovTov(TOV='hi',SEP=',')
, TOV
elemanlar yerdeki karakterleri kopyalamaya karşı bağışıklık kazanır (her ikisinde "hihihi"
ve "hhiihhiihhii"
içinde üç "hi"
s vardır ve bunların tümü, s arasında TovTovTov
kaç tane TOV
göründüğü ile ilgilidir SEP
).
Kullanırsak SEP=', '
, tüm program karakter çoğaltmasına karşı bağışıklık kazanır (ki bu iyidir, ancak soruyu çözmez). Yani kullanıyoruz SEP=','
.
Yani programı "hihihi,hi"
, örneğin, int diziye derler [3,1]
iken,"hhiihhiihhii,,hhii"
derlerken için [3,0,1]
ve "hhiihhiihhii,,hhii"
için [3,0,0,1]
. Bu, komutların kendilerinin çoğaltma sonrası anlamlarını değiştirmeyeceği, ancak toplam uzunluk karakter çoğaltma ile değiştiği anlamına gelir. Solüsyon aşağıdaki programın uzunluğunu sorgular ve yazdırmaya karar vermek bu kullanır N+N
, N*N
ya da N^N
.
İnts dizisi olarak önerilen tam çözüm: [6, 12, 9, 18, 9, 142, 11, 38, 8, 9, 260, 11, 73, 8, 22, 75, 7, 10, 14, 3, 1, 22, 24, 18, 15, 8, 10, 16, 3, 1, 22, 24, 18, 15, 8, 10, 45, 16, 7, 22, 3, 1, 22, 24, 18, 15, 8, 22, 3, 1, 22, 24, 18, 15, 8, 25, 3, 1, 22, 24, 18, 15, 8, 48, 3, 1, 22, 24, 18, 15, 8, 277, 3, 1, 22, 24, 18, 15, 8, 3146, 3, 1, 22, 24, 18, 15, 8, 46677, 3, 1, 22, 24, 18, 15, 8, 823564, 3, 1, 22, 24, 18, 15, 8, 16777237, 3, 1, 22, 24, 18, 15, 8, 387420510, 3, 1, 22, 24, 18, 15, 8]
Bir dizge olarak, 810147050 karakterden oluşan oldukça uzun bir program:
hihihihihihi,hihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihih...
2. Sorunun yalnızca N + N ve N * N kısımlarını çözme (484 bayt)
Kullanarak TovTovTov(TOV='1',SEP=', ')
, bu kez SEP
s kopyalamaya bağışık değil ( ",, "
hala sadece bir tane var", "
vardır), bu nedenle aşağıdaki önerilen çözüm, karakter çoğaltmasından sonra bile, her zaman 33 komut içerecektir:
1111, 111111111111111111111111111111111111111111111111, 1111111111, 1111111111, 1111111111, 111111, 111111111111, 111111111, 11111111111111, 111, 1, 1111111111111111111111, 111111111111111111111111, 111111111111111111, 111111111111111, 11111111, 111111111111, 1111111111111111, 111111111111111, 1111111111111111111111, 111111111111111111111111111111111111, 11, 1111111111111111111111111111, 111111, 111, 111111, 11111111111, 111111111111111111111111111, 1111, 1, 11111111, 1, 11111111
Karşılık gelen ints dizisi (sayısı TOV
s ( 1
aşağıdaki gibi yukarıdaki 33 komutların her biri s)) aşağıdaki gibidir:[4,48,10,10,10,6,12,9,14,3,1,22,24,18,15,8,12,16,15,22,36,2,28,6,3,6,11,27,4,1,8,1,8]
Yerinde karakterleri çoğaltma 33 listesiyle sonuçlanır tamamen farklı komutların :
[8,96,20,20,20,12,24,18,28,6,2,44,48,36,30,16,24,32,30,44,72,4,56,12,6,12,22,54,8,2,16,2,16]
Orijinal ints dizisi ( N + N'yi hesaplar ) komutlar anlamlarını değiştirdikten sonra program hala mantıklı geliyor, fakat N * N'yi hesaplayacak şekilde dikkatlice tasarlandı . Örneğin, ilk ( karaktere dönüştürmek için bir sonraki kodu bir karaktere dönüştürmek için bir ascii kodu olarak kabul et) olarak anlar) karakter yinelemesinden sonra değişir , ki bu tamamen farklı bir komuttur ("Program Sayacını ilk açılan değere değiştirir) İstenilen değer hemen sonra doğru ise, ").4
TovTovTov
8