Aufgabe: Ausgabe der Schweizer Flagge.
Fröhlichen Schweizer Nationalfeiertag / Schweizer Bundesfeiertag / Fête nationale suisse / Festa nazionale svizzera
Details:
Die Flagge besteht aus einem weißen ( #FFFFFF
) Kreuz auf rotem ( #FF0000
) Hintergrund. Das Kreuz besteht aus einem 6x6 Quadrat mit Armen der Größe 6x7, die an jeder Seite festgeklebt sind. Das Kreuz befindet sich in der Mitte des 32x32-Quadrats mit einem Abstand von 6 Einheiten zu jeder Seite. ( Quelle )
Die Ausgabegröße kann vom Teilnehmer gewählt werden, das Bild muss jedoch genau mit diesen Proportionen übereinstimmen. Dies bedeutet, dass die Größe ein Vielfaches von 32 sein muss.
Eine minimale Version würde so aussehen:
code-golf
kolmogorov-complexity
graphical-output
fehlerhaft
quelle
quelle
echo 🇨🇭
- Ich nehme an, das ist nicht erlaubtAntworten:
SVG (HTML5),
94838264 Bytes2 Bytes dank @ThePirateBay gespart. 1 Byte dank @ATaco gespeichert. Dank @CraigAyre, der darauf hinweist, dass ein 32 × 32-Bild akzeptabel ist, wurden 18 Byte eingespart. Wie von @Shaggy hervorgehoben, wird davon ausgegangen, dass Ihr Standardhintergrund weiß ist. Füge 22 Bytes für ein Flag hinzu, das auf jedem Hintergrund funktioniert:
quelle
>
in Ihrem Pfad-Tag optional.viewBox
für die Minimalversion entfernen ?<svg><path d=M0,0V32H32V0M6,13h7V6h6v7h7v6H19v6H13V19H6 fill=red
x86-16-Maschinencode für DOS, 43 Byte
Der obige Code soll als COM-Datei zusammengestellt und dann unter DOS ausgeführt werden. Es ruft die ROM BIOS-Videodienste auf, um die einzelnen Pixel der Flagge zu zeichnen und eine 32 × 32-Darstellung der Schweizer Flagge in der oberen linken Ecke des Bildschirms zu bilden.
Der Code setzt voraus, dass der Videomodus bereits auf den Modus 0x13 eingestellt ist. Dies bedeutet auch, dass ein VGA-Display erforderlich ist. Es können auch andere Videomodi verwendet werden. Wenn Sie jedoch VGA benötigen, erhalten Sie zwei Dinge: (1) quadratische Pixel und (2) eine Standardpalette mit einem echten Rotanteil von 100% (
0xFF0000
) (Sie müssen also keine Bytes für das Ändern der Palette verschwenden) Farben). Bevor Sie dieses Programm ausführen, müssen Sie Ihre Anzeige daher in den Modus 0x13 schalten. Dazu brauchen Sie nur den folgenden Code:Der Code macht keine anderen Annahmen und sollte auf jeder x86-kompatiblen Hardware unter einem DOS-kompatiblen Betriebssystem ausgeführt werden.
Das Programm wird jedoch sofort nach dem Zeichnen des Flags beendet, sodass die DOS-Eingabeaufforderung normalerweise in der oberen linken Ecke des Bildschirms erneut gedruckt wird und die obersten paar Zeilen des Flags verdeckt. Wenn Sie also die wahre Ausgabe bestaunen möchten, müssen Sie das System anhalten, bevor es funktioniert
RET
. Hier ist ein Screenshot davon, wie das auf einer virtuellen FreeDOS-Maschine aussieht:Es könnte möglich sein, dies weiter abzuspielen, indem Pixeldaten direkt in den Videopuffer geschrieben werden, zumal ich bereits den Modus 0x13 einnehme. Das habe ich noch nicht ausprobiert.
INT 0x10
ist bereits eine ziemlich kurze Anweisung, aber wenn ich die Ein-Byte-Zeichenfolgenanweisungen verwenden kann, um Pixeldaten direkt in den Speicher zu schreiben, könnte dies zu einer erheblichen Codeeinsparung führen.quelle
MATL , 29 Bytes
Probieren Sie es bei MATL Online!
Erläuterung
quelle
Java 8, 246 + 42 = 288 Bytes
Vielen Dank an @Aaron für -64 Bytes.
-4 Bytes durch Ausgabe in eine Datei
a
ohne Erweiterung.Ein Lamba-Ausdruck, der einer funktionalen Schnittstellenmethode zugewiesen werden kann, die eine Ausnahme auslöst. Erstellt eine Bilddatei mit dem Namen
a
(eine Bilddatei) in dem Verzeichnis, in dem diese Datei ausgeführt wird.Umgebungscode für die Ausführung: Probieren Sie es online aus!
Ungolfed
Ergebnis
Raster, das von der IntelliJ IDEA-Bildvorschau bereitgestellt wird (anscheinend).
quelle
fillPolygon
Anruf in zweifillRect
Anrufe umwandeln. Ich bin mir nicht sicher, ob ich die Dimensionen respektiert habe, aber ich habeg.fillRect(7,13,18,6);g.fillRect(13,7,6,18)
64 Bytes weniger gefunden.png
anstelle von benennena.png
und ein Byte speichern.a
, ohne eine Erweiterung? Es kann immer noch geöffnet werden, muss nur angewiesen werden, in einem Foto-Viewer zu öffnen.Excel VBA,
868579 BytesCode
Anonyme VBE-Sofortfensterfunktion, die keine Eingabe und Ausgabe der Schweizer Flagge in den Bereich
[A1:F32]
desActiveSheet
Objekts übernimmt . Dies funktioniert, indem zuerst die Zellen quadratisch gemacht werden, dann der rote Bereich und schließlich das weiße Kreuz eingezeichnet werden.Es ist zu beachten, dass Anordnungen, die den Schritt des Färbens des "Kreuzes" der Schweizer Flagge nach dem Einfügen des roten Hintergrunds entfernen, tatsächlich länger sind als die obige Konfiguration, da sie mindestens 16 Zellenadressen erfordern, die zu den 8 verschiedenen Regionen der Schweiz koordinieren Flagge
-1 Byte dank @ Greedo's für
RowHeight=48
überColumnWidth=2
-6 Bytes dank @ Greedo's
-1
stattdessenrgbWhite
Ausgabe
quelle
Interior.Color=-1
stattInterior.Color=rgbWhite
rgbWhite
der16777215
Übersichtlichkeit über den Dezimalwert von keine Ahnung, dass-1
das den gleichen Effekt haben würde. Vielen Dank!C ++, SFML,
406399394 Bytes-2 Bytes dank pdpi
-10 Bytes dank Zacharý
SFML (Simple and Fast Multimedia Library) ist eine C ++ - Bibliothek, die entwickelt wurde, um die Entwicklung von Videospielen und Multimediaprogrammen zu vereinfachen
Der Code :
Die Flagge wird in einem 128x128 Fenster angezeigt. Ihr Betriebssystem muss in der Lage sein, ein 128x128-Fenster anzuzeigen (mein Win8.1 kann nicht mit einer geringeren Breite angezeigt werden)
WARNUNG : Möglicherweise möchten Sie diese beiden Codezeilen hinzufügen
t.setFramerateLimit(60);t.setVerticalSyncEnabled(true);
, damit sich Ihre CPU nicht erwärmt, wenn Sie den Code ausführen. Ich habe sie aus Golfgründen nicht in den Originalcode eingefügt.quelle
int main(){for(sf::RenderWindow t(sf::VideoMode(128,128),"");t.isOpen();){t.clear();sf::RectangleShape r({128.f,128.f});r.setFillColor(sf::Color::Red);t.draw(r);r.setFillColor(sf::Color::White);r.setPosition({24.f,52.f});r.setSize({80.f,24.f});t.draw(r);r.rotate(90);r.setPosition({76.f,24.f });t.draw(r);t.display();for(sf::Event e;t.pollEvent(e);)if(e.type == 0)t.close();}}
e.type == 0
=>e.type==0
, vielleicht sogar!e.type
(ohne Rücksicht auf den Vorrang).24.f }
=>24.f}
using namespace sf;
möglich?Braindraw, 227 Bytes (nicht konkurrierend) (aktualisiert, um tatsächlich zu funktionieren)
Ungolfed-Version (241 Bytes)
Leicht golfene Version (227 Bytes)
Braindraw ist eine Programmiersprache meines eigenen Designs. Ab heute, 15:08 Uhr, habe ich einen funktionierenden Dolmetscher und habe überprüft, ob das Programm ordnungsgemäß ausgeführt wird. Der Dolmetscher existierte jedoch nicht, bevor dieser Wettbewerb begann. Ich nehme also nicht teil.
Braindraw ist dasselbe wie Brainf ***, außer dass es auf drei zweidimensionalen Arrays und nicht auf einem eindimensionalen Array ausgeführt wird. Diese Arrays heißen r, g und b und fungieren als rot-grüne und blaue Farbkanäle. Der Operator r bewegt den Zeiger auf den roten Kanal usw. usw. Oben ist ^, unten ist v.
quelle
TI-BASIC (nur TI-84 Plus C (S) E), 58 Byte
quelle
Mathematica, 83 Bytes
nächste ist von @ ASCII-only (ich dachte, es wäre ein Witz, aber es funktioniert!)
Mathematica, 23 Bytes
-10 Bytes von @Jonathan Frech
quelle
CountryData["Switzerland","Flag"]
aber es hat möglicherweise nicht die richtigen Proportionen"Switzerland"~CountryData~"Flag"
spart Ihnen noch etwas"CH"~CountryData~"Flag"
Nimmt nur 23 Bytes.HTML + CSS, 15 + 117 Bytes = 132 Bytes
Verwenden eines Flexbox-Wrappers mit einem
inset
box-shadow
.HTML + CSS, 18 +
139137122 Bytes = 140 BytesVorherige Antwort mit
border
und einem Zwischen-Flexbox-Wrapper mit Negativmargin
.quelle
GraphicsMagick (?), 96 Byte
Ich bin mir nicht sicher, wie ich mit GM Golf spielen soll (sollte dies als Sprache betrachtet werden?). Auch nicht sicher, wie man hier Bytes zählt ...
Wenn GM installiert ist, geben Sie den angegebenen Code in Windows Cmd ein. Sie erhalten ein Bild mit Namen
1.bmp
. Sie können doppelte Anführungszeichen in einfache Anführungszeichen ändern, wenn Sie Bash verwenden (es sollte funktionieren, aber ich hatte dies nicht getestet).Dank Digital Trauma. Verwenden Sie nur einen
-draw
Save 8 Bytesquelle
-draw
Zeichenfolge einfügen:convert -size 32x32 xc:red -fill white -draw "rectangle 13,6 18,25 rectangle 6,13 25,18" i.png
JavaScript + HTML, 99 + 13 = 112 Byte
2 Bytes dank user2428118 gespeichert 2 Bytes dank Matheus Avellar gespeichert
JSFiddle
Reines JavaScript,
194129 BytesJSFiddle
quelle
<canvas>
den HTML-Code bei Bedarf direkt in Ihre Antwort aufnehmen. Siehe codegolf.stackexchange.com/a/136972/47097JavaScript (ES6) in HTML4 (?),
178176 BytesJa! Wir brauchen weder
<canvas>
noch<svg>
noch<img>
!Dank Justin Mariner sparen Sie 2 Bytes.
quelle
Löve2D ,
139138 BytesDank ThePirateBay ein Byte gespart
Ungolfed
quelle
Python 3 , 190 Bytes
Ausgabe speichern unter
image.xpm
und mit Ihrem bevorzugten Texteditor öffnen.Probieren Sie es online!
Ausgabe:
quelle
Perl 5 , 184 Bytes
176 Byte Code + 8 für
-Mutf8 -p
.Ich bin mir nicht ganz sicher, ob dies der Fall ist. Es hängt davon ab, dass leere Eingaben gemäß diesem Meta-Post bereitgestellt werden , was bei TIO nicht funktioniert. Es wird also eine neue Zeile bereitgestellt (die nicht verwendet wird). Die Ausgabe erfolgt zum Terminal und sieht folgendermaßen aus:
Die Proportionen sollten skalierbar sein, wobei ein Zeichenabstand zwei vertikale "Pixel" sein sollte.
Probieren Sie es online!
Sie können eine Vorschau der Ausgabe anzeigen, indem Sie sie aus TIO kopieren und hier einfügen (dies zeigt die Steuerzeichen, wenn Sie den Mauszeiger über das Element halten) .
quelle
GFA BASIC (Atari ST), 62 Byte
Eine manuell bearbeitete Liste im .LST-Format. Alle Zeilen enden mit
CR
, einschließlich der letzten.Erweitert und kommentiert:
Ausgabe
Die Ausgabe ist 32x32.
NB: Dies verwendet in der Tat die 'weiße' Farbe, obwohl sie auf dem Emulator grau aussieht (und auch auf der realen, es sei denn, Sie drehen die Helligkeit ziemlich hoch).
quelle
R
171140 Bytes.(etwas) ungolfed:
Vielen Dank an @gregor für das Speichern einiger Bytes
Starte es!
quelle
e=2
anstelle voneach=2
,t
anstelle vontype
,c
fürcol
,b
fürborder
. Und0*1:4
ist kürzer alsc(0,0,0,0)
.plot
:plot(0,0,'n',l,l,xaxs="i",yaxs="i")
(Die Zuweisungm="i"
kostet Sie tatsächlich ein Byte.) Mit all dem geht es auf 141 Bytes runter.l
und dasxlim
/ylim
wird einfach nicht benötigtplot(0:32,0:32,...)
. Ich habe auch Ihre Herangehensweise angepasst und hierrect
polygon
auf 117 gesetzt , anstatt .Oktave,
105 Bytes73 BytesHinweis: Der Übersichtlichkeit halber wurden Zeilenvorschübe hinzugefügt, die nicht in der Byteanzahl enthalten sind
EDIT: danke an flawr für das sparen einer menge bytes!
Hier ist das Ergebnis auf octave-online.net, dank der Lizenzen
quelle
x(32,32,3)=0; x(:,:,1)=1; x(7:26,14:19,:)=1; x(14:19,7:26,:)=1; imshow(x*255)
GIF, 97 Bytes
Billig und bytelastig, aber es lohnt sich.
BEARBEITEN: Einige Zeichen sind nicht im obigen Code enthalten. Hier ist ein Pastebin für den Hexdump des GIF.
BEARBEITEN: Mit dem Online-Tool auf 97 Byte komprimiert.
quelle
HTML + JavaScript (ES6), 13 + 112 = 125 Byte
HTML + JavaScript (ES6), 13 + 114 = 127 Byte
quelle
clearRect
Ich hoffe, Sie sind damit einverstanden?C #
265/266209 BytesIch habe Leerzeichen in die Konsole geschrieben, während ich die Hintergrundfarbe geändert habe. Aber wenn Sie denken, dass es zu groß ist und Sie ein einzelnes Zeichen als 8 x 16 Pixel zählen, verdoppeln Sie einfach die Werte in der Nähe von "j" wie folgt (+ 1 Byte und +,
c.ReadKey();
damit es aufhört):56 Bytes gespart dank TheLethalCoder
quelle
namespace System{using static Console;class P{static void Main(){for(int i=0,j;i<32;i++,WriteLine())for(j=0;j<32;Write(" "))BackgroundColor=(ConsoleColor)((6<i&i<26&j>13&j<19)|(6<j&j++<26&i>13&i<19)?15:12);}}}
Tikz,
145143 BytesHier ist es "ungolfed"
Hier ist es etwas mehr ungolfed
Dies macht aus 3 Rechtecken ein großes rotes und zwei kleinere weiße Rechtecke für das Plus.
So sieht es aus. Es sieht nicht wirklich anders aus als die anderen.
quelle
documentclass
Vor ein paar Wochen habe ich Github golfen . und es scheint keine Fensterhintergrundanforderung zu geben. Damit\documentclass{g}\input tikz
sollte es funktionieren, um 5B zu sparen. Sie können wahrscheinlich mehr sparen, indem Sie in TeX arbeiten , auch mit TikZR, 109 Bytes
Dient
frame
zum Vermeiden der Voreinstellung eines Plots, aber der Standard-Plotbereich ist Intervall [0,1] anstelle von [0,32]. Verwendet auch die Tatsache, dassrect
vektorisiert wird. Die Standardgröße des Plotfensters beträgt 7 x 7 Zoll. Es gibt Folgendes aus:R, 125 Bytes
Die Standardeinstellung für
png
ist ein Quadrat mit 480 x 480 Pixeln. Ausgabe ist die folgende PNG-Datei:quelle
R 112 Bytes
Um das Seitenverhältnis zu gewährleisten, benötigen wir jedoch 5 weitere Bytes für insgesamt 117:
Mit viel Inspiration von Alex Axthelm's Antwort und danke an Rift für das Speichern einiger weiterer Bytes.
quelle
bg="red"
,bg=2
die in der Standardpalette identisch sindPostscript,
301 286187 BytesVielen Dank an den anonymen Editor, der eine Reduzierung von 99 Byte vorgeschlagen hat !
quelle
Rot , 79 Bytes
Code:
Ergebnis:
Erläuterung:
quelle
Bitmap, 160 Bytes
Hier ist eine Bitmap mit 1-Bit-Farbtiefe unter Verwendung einer 24-Bit-Farbdefinition. Die letzten sechs Bytes der zweiten Zeile sind die Palette und danach das Pixel-Array. Alle vier Bytes enthalten eine ganze Reihe von Pixeln.
Ich habe versucht, die nachgestellten Nullen abzuschneiden, aber für Bildbetrachter ist es erforderlich, dass genügend Pixel für die gesamte Leinwand definiert sind.
quelle
Python 2,
929189 BytesAusgabe als binäre ppm, Verwendung:
Durch Erhöhen der Farbtiefe konnte ich den Platz für den maximalen Wert nutzen
quelle
Tcl / Tk, 94
Wenn es auf der interaktiven Shell läuft, kann man abkürzen
canvas
zucan
undgrid
zugri
Tcl / Tk, 98
Wenn es auf der interaktiven Shell läuft, kann man abkürzen
canvas
zucan
Tcl / Tk, 101
quelle