Die Größe des Mondgeheimnisses
Ich bin sicher, Sie haben gehört, dass der Mond seine Größe ändert. Wenn Sie verliebt sind und Glück haben, ist der Mond im Vergleich zu normalen Situationen fast doppelt so groß. Einige Leute sagen, der Grund dafür sei die Atmosphäre, die als Linse fungiert. Andere meinen, es handele sich nur um einen Vergleich mit anderen Objekten wie Bäumen in der Nähe. Welche Erklärung Sie auch lesen, sie ist ziemlich subjektiv.
Die Größe der Mondwissenschaft
Ok, wir sind Programmierer, nicht wahr? Wir verlassen uns auf Fakten, oder? Also hier ist das Experiment:
- Nehmen Sie eine schöne Kamera, die das manuelle Einstellen von Zeit und Blende unterstützt.
- Stellen Sie Ihre Kamera auf die maximale Zoomstufe ein.
- Machen Sie ein paar Fotos vom Mond, um die besten Einstellungen zu ermitteln, damit der Mond scharf ist und die Beleuchtung in Ordnung ist.
- Merken Sie sich die Einstellungen
- Machen Sie mit diesen Einstellungen jedes Mal Fotos vom Mond, wenn Sie glauben, der Mond sei groß oder klein.
- Berechnen Sie die Größe des Mondes in Pixel
Die Kamera lügt doch nicht, oder? Durch Zählen der hellen Pixel können wir die Größe des Mondes effektiv messen - zumindest in Pixel.
Wenn die Größe aller Fotos gleich ist, ist dies ein Fehler in unserem Gehirn. Wenn die Größe unterschiedlich ist, gibt es Raum für Spekulationen
- der Mond wächst wirklich (aber was isst er?)
- Es gibt einen atmosphärischen Linseneffekt
- Der Mond hat eine elliptische Kurve und ist manchmal näher, manchmal weiter von der Erde entfernt
- ...
Aber ich lasse das offen, bis deine Aufgabe erledigt ist. Natürlich möchten Sie im Voraus wissen, ob Ihre Software die Mondgröße genau berechnen kann.
Die Aufgabe
Berechnen Sie anhand einiger optimierter Bilder des Mondes die Größe des Mondes. Die Optimierung ist: Die Pixel sind entweder schwarz oder weiß. Nichts dazwischen. Kein Antialiasing. Das macht es einfach, nicht wahr?
Der Vorbehalt: Der Mond ist nicht immer voll, wissen Sie ... es kann eine Sichel sein! Aber auch in Sichelform ist der Mond größer. Also berechnen Sie bitte die volle Größe.
- Ihr Programm verwendet eine PNG als Eingabe, z. B. als Befehlszeilenargument für Dateinamen, als Pipeline
stdinoder als Bitmap-Objekt (einer Standard-Framework-Bibliothek), wenn Sie eine Funktion anstelle eines Programms schreiben. - Ihr Programm arbeitet mit einer angemessenen Bitmap-Eingabegröße, die nicht unbedingt quadratisch sein muss. Minimale Breite und Höhe von 150 Pixel sind garantiert.
- Der Vollmond bedeckt mindestens 25% des Bildes.
- Ihr Programm gibt die berechnete Größe des Mondes in Pixeln aus, als wäre es ein Vollmond.
- Wir nehmen an, dass der Mond eine perfekte Kugel ist.
- Die genaue Größe ist immer eine Ganzzahl, aber Sie können eine Dezimalzahl ausgeben, wenn Ihre Berechnung dies ergibt.
- Die Genauigkeit sollte zwischen 98% und 102% liegen. (Das ist eher eine Vermutung als etwas, das ich garantieren könnte, um erreichbar zu sein. Wenn Sie denken, dass es zu schwer zu erreichen ist, hinterlassen Sie bitte einen Kommentar.)
Update :
- Der Mittelpunkt des Mondes muss nicht unbedingt in der Mitte des Bildes liegen.
- Die minimale sichtbare Fläche beträgt 5% des Mondes oder 1,25% der Gesamtzahl der Pixel.
- Das Bild wird so aufgenommen, dass der gesamte Mond zum Bild passt, dh die Gesamtzahl der Pixel ist eine Obergrenze für die Mondgröße.
- Der Mond wird nicht beschnitten.
Die Beispiele
Sie können Ihre eigenen Samples mit der Blend-Datei erzeugen, wenn Sie möchten. Ich habe die folgenden Bilder für Sie erstellt. Sie können Pixel in einer PNG-Datei mithilfe von WhitePixelCounter.exe (benötigt .NET) zählen, um zu überprüfen, ob das Bild nur schwarze und weiße Pixel enthält und wie viele davon.
Die folgenden 256 x 256 Pixel großen Bilder unterscheiden sich in der Anzahl der weißen Pixel, sollten jedoch alle zu einer berechneten Mondgröße von 16416 Pixel führen.

Und diese 177x177 Pixel-Bilder sollten 10241 Pixel zurückgeben. Die Bilder sind grundsätzlich gleich, diesmal wurde jedoch eine Kamera mit einer anderen Brennweite verwendet.

Nicht quadratische und nicht zentrierte Samples mit einem Ergebnis von 9988:

Oh, ich habe momentan keine Referenzimplementierung und ich weiß nicht einmal, ob ich etwas implementieren kann. Aber in meinem Gehirn gibt es einen starken Glauben, der mir sagt, dass es mathematisch lösbar sein muss.
Die Regeln
Das ist Code Golf. Der kürzeste Code am 30.03.2015 wird akzeptiert.



