Mit Algodoo und Paint habe ich diese sechs monochromen 300 × 300-Bilder in vier praktischen Formen erstellt:
Diese Bildklasse weist die folgenden Eigenschaften auf:
- Sie sind immer 300 × 300 Pixel, einfarbig (nur Schwarzweiß) und haben genau vier weiße Bereiche, die einem Quadrat, einem Kreis, einem Dreieck und einem Zahnrad entsprechen.
- Die Formen überlappen sich nie und berühren sich auch nicht. Sie berühren auch nicht den Bildrand oder überschreiten Grenzen.
- Die Formen haben immer die gleiche Größe, können jedoch gedreht und beliebig positioniert werden.
(Die Formen haben auch gleiche Flächen, wenn sie jedoch so gerastert werden, ist es unwahrscheinlich, dass ihre Pixelanzahl genau gleich ist.)
Herausforderung
Schreiben Sie das kürzeste Programm oder die kürzeste Funktion, die den Dateinamen eines solchen Bildes aufnimmt und alle weißen Pixel umdreht ...
- rot,
(255, 0, 0)
wenn sie auf dem Platz sind. - blau,
(0, 0, 255)
wenn sie im Kreis sind. - grün,
(0, 255, 0)
wenn sie im Dreieck sind. - gelb,
(255, 255, 0)
wenn sie im Gang sind.
z.B
Einzelheiten
Ihr Programm sollte für alle möglichen Eingabebilder effektiv funktionieren. (Es werden nur gültige einfarbige 300 × 300-Bilder eingegeben.) Die sechs von mir bereitgestellten Bilder sind lediglich Beispiele. Sie können die Ausgabe möglicherweise nicht fest in Ihr Programm einprogrammieren.
Sie dürfen keine integrierten oder externen Computer Vision-Bibliotheken oder -Funktionen verwenden. Der Punkt ist, dies unter Verwendung Ihrer eigenen Operationen auf Pixelebene zu tun. Sie können Bildbibliotheken verwenden, mit denen Sie einfach Bilder öffnen und ändern können (z. B. PIL für Python).
Sie können alle gängigen verlustfreien Bilddateiformate für die Eingabe und Ausgabe verwenden, solange Sie sich an das Farbschema halten.
Sie können den Bilddateinamen als Funktionsargument von stdin oder über die Befehlszeile eingeben. Das Ausgabebild kann in einer neuen Datei oder derselben Datei gespeichert oder einfach angezeigt werden.
Wertung
Die Einsendung mit den wenigsten Bytes gewinnt. Ich kann Einsendungen mit zusätzlichen Bildern testen, um ihre Gültigkeit zu bestimmen.