Ayın gizeminin büyüklüğü
Eminim ayın boyutunu değiştirdiğini duymuşsunuzdur. Aşık olduğunuzda ve şanslı olduğunuzda, ay normal durumlara kıyasla neredeyse iki kat daha büyüktür. Bazı insanlar bunun nedeninin mercek görevi gören atmosfer olduğunu söylüyor. Diğerleri bunun sadece yakındaki ağaçlar gibi diğer nesnelerle karşılaştırılma meselesi olduğunu düşünüyor. Hangi açıklamayı okursanız okuyun, oldukça özneldir.
Ay biliminin büyüklüğü
Tamam, biz programcıyız, değil mi? Gerçeklere güveniyoruz, değil mi? İşte deney:
- Manuel olarak ayarlanan süreyi ve diyaframı destekleyen güzel bir kamera çekin.
- Kameranızı maksimum zum seviyesine ayarlayın.
- Dışarı çıkın, ayın keskin olması ve aydınlatmanın iyi olması için en iyi ayarları tespit etmek için ayın bazı fotoğraflarını çekin.
- Ayarları hatırla
- Ayın büyük veya küçük olduğunu her düşündüğünüzde bu ayarlarla ayın fotoğrafını çekin.
- Ayın boyutunu piksel cinsinden hesaplayın
Kamera yalan söylemez, değil mi? Parlak pikselleri sayarak ayın boyutunu etkili bir şekilde ölçebiliriz - en azından piksel cinsinden.
Boyut tüm fotoğraflarda aynı ise, beynimizde bir hata. Boyut farklıysa, spekülasyon için yer var
- Ay gerçekten büyür (ama ne yer?)
- atmosferik bir lens etkisi var
- ay eliptik bir eğriye sahiptir ve bazen daha yakın, bazen dünyadan daha uzakta
- ...
Ama göreviniz tamamlanana kadar bunu açık bırakacağım. Elbette, yazılımınızın ay boyutunu doğru bir şekilde hesaplayıp hesaplayamayacağını önceden bilmek istersiniz.
Görev
Ayın birkaç optimize edilmiş resmi göz önüne alındığında, lütfen ayın boyutunu hesaplayın. Optimizasyon: pikseller siyah veya beyazdır. Arasında hiçbir şey yok. Kenar yumuşatma yok. Bu kolaylaşıyor, değil mi?
Uyarı: Ay her zaman dolu değildir, bilirsiniz ... orak olabilir! Ancak orak şeklinde bile, ayın büyüklüğü daha büyüktür. Yani tam bedeni hesaplayacaksınız, lütfen.
- Program
stdin
yerine bir işlev yazarsanız , programınız PNG'yi girdi olarak, örneğin dosya adı komut satırı bağımsız değişkeni olarak, bir Bitmap nesnesine (standart çerçeve kitaplığının) içine veya bu nesneye aktarılır. - Programınız, kare olması gerekmeyen makul bir giriş bitmap boyutuyla çalışır. Minimum 150 piksel genişlik ve yükseklik garanti edilir.
- Dolunay resmin en az% 25'ini kaplar.
- Programınız, hesaplanan ayın boyutunu dolunaymış gibi piksel cinsinden çıktılar.
- Ayın mükemmel bir küre olduğunu varsayıyoruz.
- Tam boyut her zaman bir tamsayıdır, ancak hesaplamalarınız bunu döndürürse ondalık bir sayı verebilirsiniz.
- Doğruluk% 98 ile% 102 arasında olmalıdır. (Bu, ulaşılabilir olmayı garanti edebileceğim bir şeyden ziyade bir tahmin. Ulaşmanın çok zor olduğunu düşünüyorsanız, lütfen bir yorum bırakın.)
Güncelleme :
- Ayın merkezi mutlaka resmin ortasında değil.
- Görünür minimum alan ayın% 5'i veya toplam piksel sayısının% 1.25'idir.
- Resim, tüm ayın görüntüye uyacak şekilde çekilir, yani toplam piksel sayısı ay boyutu için bir üst sınırdır.
- Ay kırpılmayacak / kırpılmayacak.
Örnekler
İsterseniz karışım dosyasını kullanarak kendi örneklerinizi oluşturabilirsiniz . Sizin için aşağıdaki resimleri oluşturdum. Görüntünün yalnızca siyah beyaz piksel içerip içermediğini ve kaç tane olduğunu kontrol etmek için PNG dosyasındaki pikselleri WhitePixelCounter.exe (.NET gerekir) kullanarak sayabilirsiniz .
Aşağıdaki 256x256 piksel görüntü, beyaz piksel miktarında farklılık gösterir, ancak tümü 16416 piksel hesaplanan ay boyutuyla sonuçlanmalıdır.
Ve bu 177x177 piksel görüntüler 10241 piksel döndürmelidir. Görüntüler temel olarak aynıdır, ancak bu sefer farklı odak uzaklığına sahip bir kamera kullanılmıştır.
9988 sonucu elde edilen kare olmayan ve ortalanmayan örnekler:
Şimdilik referans uygulamam yok ve bir şey uygulayıp uygulayamayacağımı bile bilmiyorum. Ama beynimde bana bunun matematiksel olarak çözülebilir olması gerektiğini söyleyen güçlü bir inanç var.
Kurallar
Bu Code Golf. 2015-03-30'daki en kısa kod kabul edilir.