Bir karşı dizgi , yazılım testinde kullanılan bir tür kendini tanımlayan test verisidir. Aslında James Bach tarafından icat edildiğinden emin değilim , ama oradan biliyorum.
Fikir aşağıdaki gibidir: test verileri birçok yıldız işareti ( *) içerir . Yıldız işaretinin önündeki sayı, test verilerinin o noktada ne kadar süreceğini gösterir. Test verilerinde yıldız işareti olmayan bir konum bilmeniz gerekiyorsa, son yıldız işaretini bulun, önceki sayıya bakın ve takip eden basamak sayısını ekleyin.
Dizi şu şekilde başlar:
2*4*6*8*11*14*17*20*23*
^
Gördüğünüz gibi, işaretli yıldız işareti 14 konumundadır.
Bir dosya aşağıdaki gibi kısaltılırsa
[...]2045*20
o zaman 2047 karakter yerde (2045 yıldız artı 2 bir sınırı olduğunu türetebilirsiniz 2ve 0).
Bu formatta gelişigüzel uzun bir test dizesi (std :: out veya file ya da neyse) çıktısı veren en kısa ( kod-golf ) programı oluşturmak sizin görevinizdir . Karakter cinsinden uzunluk bağımsız değişken olarak verilir. Program 2 GB'a kadar test verisini desteklemelidir (giriş değeri 2147483647 karakter).
2 GB dosyasındaki "Tehlikeli" konumlar:
8*11*
98*102*
998*1003*
9998*10004*
99998*100005*
999995*1000003*
9999995*10000004*
99999995*100000005*
999999995*1000000006*
995 * 999 * ile 995 * 1000 * arasında bir karar veya benzeri bir karar varsa, bu @Leaky Nun'in sorusuna cevap vermelidir : hayır.
2147483647 giriş değerine sahip 2 GB dosyasının sonu:
2147483640*2147483
995*999*ve 995*1000*bunun gibi bir şey arasında seçim yapmak zorunda olmadığımızı kanıtlayabilir misiniz ?