Tupper'ın Kendine Referans Formülü (Wikipedia'dan kopyalandı)
Tupper'ın kendine referans formülü, Jeff Tupper tarafından tanımlanan, düzlemde çok spesifik bir konumda iki boyutta çizildiğinde, formülün kendisini görsel olarak çoğaltmak için "programlanabilen" bir formüldür. Çeşitli matematik ve bilgisayar bilimleri derslerinde grafik formüllerinde alıştırma olarak kullanılır.
Zemin işlevi nerede .
Let k
şu 543 haneli sayı:
960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
Biri , yukarıda verilen eşitsizliği (x, y)
gösteren 0 <= x < 106
ve k <= y < k + 17
tatmin eden nokta kümesini çiziyorsa, sonuçtaki grafik şöyle görünür (bu çizimdeki eksenlerin tersine çevrildiğine dikkat edin, aksi halde resim ters çıkar):
Ne olmuş yani?
Bu formülle ilgili ilginç olan şey, olası herhangi bir siyah beyaz 106x17 görüntüsünü grafik haline getirmesidir. Şimdi, aslında arama yapmak için arama yapmak çok sıkıcı olacak, görüntünüzün göründüğü yerde k değerini anlamanın bir yolu var. İşlem oldukça basittir:
- Resminizin ilk sütununun alt pikselinden başlayın.
- Eğer piksel beyaz ise, k değerine 0 eklenir. Siyahsa, 1 ekleyin.
- 2 numaralı adımı yineleyerek sütunu yukarı kaldırın.
- Sütunun sonunda bir sonraki sütuna geçin ve aynı işlemi takip ederek alttan başlayın.
- Her piksel analiz edildikten sonra, bu ikili dizgeyi ondalık değere dönüştürün ve k değerini elde etmek için 17 ile çarpın.
Mesleğim ne
İşiniz, herhangi bir 106x17 görüntü alabilen bir program oluşturmak ve karşılık gelen k değerini vermektir. Aşağıdaki varsayımları yapabilirsiniz:
- Tüm resimler tam 106x17 olacak
- Tüm resimler yalnızca siyah (# 000000) veya beyaz (#FFFFFF) piksel içerecek, aralarında hiçbir şey olmayacaktır.
Birkaç kural da var:
- Çıktı basitçe k-değeridir. Uygun bir temelde olmalıdır, ancak herhangi bir formatta olabilir.
- Görüntüler bir PNG veya PPM'den okunmalıdır.
- Standart boşluklar yok.
Test görüntüleri
[ ] ~ 1.4946x10 542 üretmeli
[ ] ~ 7.2355x10 159 üretmeli
[ ] 2 1801 * 17 üretmeli
[ ] üretmeli (2 1802 -1) * 17
Kesin çözümler için bu Gist'i inceleyin.
Bu kod golf , yani en az bayt sayısı kazanır.
Faydalı Bağlantılar
quine
yerde kelimeyi göreceğime eminim .