Vorwort
Es gibt viele "Draw X Flag" -Herausforderungen, und beim Suchen stellt sich heraus, dass es keine Herausforderungen gibt, den Union Jack zu zeichnen! Ich denke, es wäre schwieriger, diese Flagge zu ziehen, aber es sollte trotzdem möglich sein.
Herausforderung
Zeichne den Union Jack. Es kann in einer Datei in einem beliebigen frei verfügbaren Grafikdateiformat ausgegeben oder auf den Bildschirm gezeichnet werden.
- Es gelten die Regeln für den Code Golf. Der kürzeste Code in Bytes gewinnt.
- Es gelten Standardlücken.
- Keine eingebauten Funktionen zum Zeichnen von Flaggen zulässig.
Die Abmessungen müssen wie folgt sein. Minimale Größe 600 x 300 Pixel (oder Einheiten, wenn Ihre Sprache nur skalierbare Grafiken unterstützt.) Maximaler Fehler 1 Pixel.
Die Farben müssen rot, weiß und blau sein, wie in Ihrer Sprache oder deren Dokumentation definiert, oder # CC0000, #FFFFFF und # 003399 pro Wikipedia-Seite.
code-golf
kolmogorov-complexity
graphical-output
Shaun Wild
quelle
quelle
Antworten:
BBC BASIC
Rev. B, 234 Bytes
Anstatt ein weißes und ein rotes Kreuz zu zeichnen, zeichnen wir 100 zunehmend schmalere Kreuze und wechseln mit einer Koordinate von 60 vom weißen Hintergrund zum roten Vordergrund.
Laden Sie den Dolmetscher kostenlos unter http://www.bbcbasic.co.uk/bbcwin/bbcwin.html herunter
Voll Golf, 249 Bytes
Einzelbyte-Bildschirmcodes, z. B.
25,0
kombiniert zu Doppelbyte-Little-Endian- Codes, z. B.25;
maximale Verwendung von Konstanten für gemeinsame Werte. In abgekürzte Form komprimierte Schlüsselwörter, z. B.FOR
=>F.
(Interpreter wird automatisch erweitert.)Semigolfed
Rohe Bildschirmcodes. In BBC BASIC können Zeichen wie
VDU65
(druckt ein A) an den Bildschirmcontroller gesendet werden. Für Grafiken gibt es bestimmte Sonderzeichen, die für die BBC spezifisch sind. Darauf müssen mehrere andere Bytes folgen, um Koordinaten usw. anzugeben. Hier verwenden wirPLOT
=>VDU25
,GCOL
=>VDU18
,ORIGIN
=>VDU29
.Zuerst zeichnen wir die Hälfte der diagonalen Teile: 2 blaue Dreiecke und 2 rote Parallelogramme. Dann ändern wir die Skala von -1 auf +1 und zeichnen die andere Hälfte. Schließlich zeichnen wir die horizontalen und vertikalen Teile oben: 2 weiße Rechtecke, um ein weißes Kreuz zu bilden, dann 2 rote Rechtecke. Das Bild nach der ersten Iteration der Schleife wird unten zusammen mit dem endgültigen Bild gezeigt.
Ungolfed Code
BBC Basic merkt sich die letzten beiden Stellen des Grafikcursors. PLOT81 zeichnet ein Dreieck zwischen den neuen angegebenen Koordinaten und diesen beiden letzten Positionen. PLOT113 und PLOT117 zeichnen ein Parallelogramm auf ähnliche Weise: Drei Ecken des Parallelogramms müssen in der Reihenfolge angegeben werden, in der sie sich um den Umfang befinden. Die letzten drei Bits des PLOT-Codes definieren, ob die angegebenen Koordinaten absolut oder relativ sind und ob Vordergrund- oder Hintergrundfarbe verwendet wird. Die signifikanteren Bits definieren, welche Art von Form gezeichnet wird (Punkt, Linie, Dreieck, Parallelogramm, Rechteck usw.).
quelle
SVG, 298 Bytes
Die Punktzahl schließt 3 unnötige Zeilenumbrüche aus Gründen der Übersichtlichkeit aus.
Inspiriert von der gelöschten Antwort von Siren (und insbesondere der Einsparung von Bytes durch Auslassen
</svg>
am Ende des Dokuments) habe ich eine SVG entwickelt, die sowohl dimensional korrekt als auch etwas kürzer ist.Es besteht aus einem blauen Pfad und einem roten Pfad (gefüllt, ohne Striche) für die diagonalen Teile und einem roten Pfad (gefüllt, mit 20 Einheiten weißem Rand) für das endgültige Kreuz. Aufgrund der Dicke des weißen Randes müssen die angegebenen Abmessungen des Kreuzes die erforderlichen Abmessungen ringsum um 10 überschreiten.
Dies funktioniert gut für mich in Microsoft IE und Edge. Manchmal wird in Chrome die Warnung "Zusätzlicher Inhalt am Ende des Dokuments" angezeigt.
So sieht es ohne und mit dem letzten Kreuz aus. 8 Punkte sind erforderlich, um den blauen Pfad zu beschreiben, 10 Punkte, um den roten Pfad zu beschreiben, und 12 Punkte für das endgültige Kreuz. Die Schnittpunkte von Geraden innerhalb der ersten beiden Pfade müssen nicht angegeben werden.
quelle
PS If anyone wants to argue that SVG isn't a programming language (and I'd be very inclined to agree), consider this a PHP program in the style of many PHP submissions to this site which just echo literal text.
Logo,
260239 Bytes(XLogo Interpreter)
Ich habe den Java-basierten XLogo-Interpreter verwendet, da er eine der wenigen Logo-Implementierungen war, die ich finden konnte und die das Einstellen der Ausgabefenstergröße unterstützt.
Der XLogo-Editor speichert normalerweise Dateien als Prozeduren, die aufgerufen werden sollen. Dieses Programm wurde geschrieben, um stattdessen in das unmittelbare Fenster eingefügt zu werden. Dies spart etwa 9 Bytes.
Da keine genauen Farben erforderlich waren, habe ich dies neu definiert, um integrierte Farbnummern zu verwenden, die mehrere Bytes sparten. Wenn Sie eine Version mit exakten RGB-Farben sehen möchten, überprüfen Sie die Revisionen. Ich habe auch eine trigonometrische Berechnung durch ein kürzeres Äquivalent ersetzt.
Ungolfed mit Kommentar
Der einzige wirkliche Trick besteht darin, die Farben für den zweiten Durchgang einer Schleife zu ändern und die Funktion zu nutzen, mit der
wrap
wir die horizontalen Streifen mit sehr geringem Aufwand zeichnen können. Da die Höhe und Breite der Flagge beide Faktoren von 600 sind, können wir 600 entweder für vertikale oder horizontale Streifen vorwärts gehen und wieder in der Mitte landen. Dies vermeidet separate Fälle für jeden Fall, selbst wenn der vertikale Balken doppelt so oft gezeichnet wird. Wir sparen Code-Platz, keine Taktzyklen.quelle
Verarbeitung, 312 Bytes
Dies ist die Art von Puzzle, bei der die Verarbeitung ziemlich effizient ist.
Ergebnisse in:
quelle
Python 2, 265 Bytes
Ausgabe als binäres PPM, Verwendung:
L
stellt eine vertikale Schicht der diagonalen Teile dar undF
verwendet die (Art) Symmetrie, um Code zu speichern und die Indizes für den oberen und unteren Teil zu berechnen.quelle
Postscript (166 Bytes)
Nicht tokenisierte Version:
Ausgabe:
quelle