Herausforderung
Wenn Sie ein Bild des Mondes als Eingabe erhalten, geben Sie die Mondphase aus.
Phasen des Mondes
Ihr Programm erhält eines dieser Bilder im PNG-Format und Sie müssen die Phase genau wie angegeben ausgeben:
new moon
waxing crescent
first quarter
waxing gibbous
full moon
waning gibbous
third quarter
waning crescent
Eingang
Die Eingabe ist der Pfad zu einer 240 x 240 Pixel großen PNG-Datei und eines der obigen Bilder.
Die Bildbytes sind garantiert gleich.
Gewinnen
Der kürzeste Code gewinnt
code-golf
image-processing
Beta-Zerfall
quelle
quelle
Antworten:
Node.js , 145 Bytes
Probieren Sie es online aus! (generiert Dummy-Dateien mit den gleichen Größen)
Wie?
Wir sehen uns nur die Größe der Datei an und konvertieren sie in zwei Nachschlagetabellen in Indizes.
Erster Teil:
Zweiter Teil:
quelle
Python 2 ,
223222 Bytes-1 Byte dank OMᗺ
getpixel((x,y))
- gibt das RGBA-Pixel bei zurückx,y
getpixel((n*48,99))[2]for n in[1,2,3,4]
- gibt den blauen Kanal der Mittellinie zurück, won*48 ... for n in 1,2,3,4
sich 4 Punkte befinden, an denen das Sonnenlicht liegen kannn*getpixel(...)
- erzeugt für jede Spalte einen anderen Wertsum(...)%13
- diese Werte werden addiert und%13
verwendet, um eine eindeutige zu erhalten Wert für jede Phase, der als Index für die Phasenliste verwendet wird.Die Pixel befinden sich ungefähr innerhalb der roten Kreise:
quelle
Ruby, 131 Bytes
Durch Brute Force gefundene Byte-Offsets - Wenn Sie beispielsweise das 699. Byte der Datei Modulo 7 verwenden, erhalten Sie einen Index in der ersten Nachschlagetabelle.
quelle
Python 2 ,
196165 BytesProbieren Sie es online aus!
quelle
PHP (> = 5,4),
199197 Bytes(-2 Bytes durch mehr Golfen)
Um es auszuführen:
Beispiel:
Anmerkungen:
-d error_reporting=0
Option wird verwendet, um keine Benachrichtigungen / Warnungen auszugeben.-d short_open_tag=1
ist erforderlich, um kurze Tags zuzulassen.https
URL wie im obigen Beispiel verwenden, sollte OpenSSL ebenfalls aktiviert sein.Wie?
Ruft die Dateigröße (Bytes) ab und erstellt nach dieser Formel eine eindeutige Nummer dafür:
((<first_bytes_digit> + <fourth_bytes_digit>) % 11) - 2
Diese Formel generiert Zahlen von 0 bis 8, wobei nur eine 3 fehlt.
Bisherige Ansätze:
PHP (> = 5,4), 251 Bytes
Um es auszuführen:
Beispiel:
Anmerkungen:
-d error_reporting=0
Option wird verwendet, um keine Benachrichtigungen / Warnungen auszugeben.-d short_open_tag=1
ist erforderlich, um kurze Tags zuzulassen.https
URL wie im obigen Beispiel verwenden, sollte OpenSSL ebenfalls aktiviert sein.Wie?
Prüft , ob die Farbe von 4 Pixeln in dem Bild bei
40,120
,80,120
,160,120
und200,120
und entscheidet über die Mondphase aus diesen Farben.quelle