Kod golf, her zaman meydan okuyanların verdiği ya da sadece düşünmediği ve kuralları listelemediği kısıtlamaları kırarak kuralları aşağı yukarı büken bazı cevaplar içerir. Bu ilginç boşluklardan biri , meydan okumanın daha iyi bir sonuç almasını istediğinden daha fazla çıktı alma olasılığıdır .
Bunu uç noktalara götürürsek, istenen çıktıyı yazdıran evrensel bir kod çözücü yazabiliriz - eğer yaşlanacağını ve daha önce ve sonra çok sayıda başka şey çıkarabileceğini umursamıyorsanız.
Çıktı almamız gereken tek şey, olası her alt diziyi içereceği garanti edilen bir dizidir. Bu kod golf için, Ehrenfeucht-Mycielski dizisi olacak :
Dizi üç bit 010 ile başlar; her ardışık basamak, sekansta daha erken görünen sekansın en uzun son ekini bularak ve bu son ekin en son önceki görünümünün ardından biti tamamlayarak oluşturulur.
Her sonlu bit dizisi bitişik, sonsuz sıklıkla dizide gerçekleşir
Dizinin ilk birkaç basamağı:
010011010111000100001111 ... ( OEIS'de A038219 dizisi ).
Sekansın 8 bitini bir bayta birleştirerek, ekrana veya bir dosyaya verebileceğimiz ve olası her sonlu çıkışı içeren ASCII çıktısını alırız . Program, pi'nin bölümlerini, “Asla pes etmeyeceğim ” sözlerini , bazı güzel ASCII sanatını, kendi kaynak kodunu ve çıktısını almak isteyebileceğiniz her şeyi çıktılar.
Doğruluğu test etmek için, dizinin ilk 256 baytının karmaları şunlardır:
MD5: 5dc589a06e5ca0cd9280a364a456d7a4
SHA-1: 657722ceef206ad22881ceba370d32c0960e267f
Onaltılık gösterimde dizinin ilk 8 baytı şunlardır:
4D 71 0F 65 27 46 0B 7C
Kurallar:
Programınız, 8 biti bir bayt / ASCII karakteriyle birleştirerek Ehrenfeucht-Mycielski dizisini (başka bir şey değil) çıkarmalıdır.
En kısa program (karakter sayısı) kazanır. Diziyi üretilen bayt başına doğrusal sürede oluşturmayı başarırsanız, karakter sayınızdan 512 çıkarın .