Winter Bash 2014 ist auf dem Höhepunkt und lieben wir nicht alle die Hüte? Besonders die geheimen Hüte!
Warum also nicht einen geheimen Hut ziehen?
Die Herausforderung
Ihre Aufgabe ist es, den Warm Welcome Hat im richtigen Verhältnis in einer Sprache Ihrer Wahl zu zeichnen und genau so zu konstruieren, wie es auf dieser Seite angezeigt wird .
Wie immer können Sie den Hut mithilfe von Vektor- oder Rastergrafiken in eine Datei oder einen Bildschirm rendern. Wenn Ihre Ausgabe gerastert ist, muss Ihr Bild Abmessungen von 400 x 400 Pixel oder mehr haben.
Darüber hinaus sollte der tatsächliche Inhalt des Hutes (der Bereich des Begrenzungsrechtecks der farbigen Teile des Bildes) mehr als 40% Ihres Ausgabebildes abdecken.
Spezifikationen
Das Bild unten listet verschiedene Abmessungen des Hutes auf. Alle Abmessungen sind in der Einheit angegeben, z. B. Pixel. Alle Randradien im Bild sind mit einem 13
Einheitenradius zu zeichnen .
Farben :
- Rot im stern und kreisring - rgb (255, 28, 34)
- Gelb im Kreis - RGB (255, 202, 87)
- Hellstes Grau - RGB (88, 88, 92)
- Dunkelstes Grau - RGB (31, 26, 26)
- Mittelgrau - RGB (64, 64, 64)
Wertung
Dies ist Codegolf, daher gewinnt die kürzeste Antwort (in Bytes).
Zur Warnung: Die Verwendung vorhandener Komprimierung (wie das Einbetten eines komprimierten GIF) ist in mehrere Standardlücken unterteilt .
quelle
Antworten:
GolfScript (
376 373 364350 oder645 610607 Byte)In Anlehnung an die ursprüngliche Spezifikation, die den genauen Aufbau der SVG forderte, wird in 607 Bytes eine Golf-SVG generiert.
Code enthält viele nicht druckbare Zeichen. Hier ist die xxd-Ausgabe:
Es ist eine Variante der konstruktiven Grammatikmaschine, mit der Anhänger der Kolmogorov-Komplexität vertraut sein werden:
Es stellte sich heraus, dass es etwas besser ist, das Golf-SVG in Großbuchstaben zu schreiben, zu komprimieren und nach der Dekomprimierung in Kleinbuchstaben zu schreiben.
Bei der Ausführung wird eine 840-Byte-SVG erzeugt:
Ich habe die Position um einige Millipixel verändert und eine kleine Asymmetrie im dunkelsten grauen Bereich korrigiert.
Die Änderungen an der Frage und Diskussion im Chat zeigen jedoch, dass es tatsächlich zulässig ist, eine gute Annäherung an die SVG zu erstellen, was in 364 Bytes möglich ist. Die Dekomprimierungskette ist ähnlich, daher lautet die xxd-Ausgabe der GolfScript-Datei:
und generiert eine 547-Byte-SVG-Datei:
Vielen Dank an Paul LeBeau für den Hinweis auf eine 7-Byte-Einsparung in der SVG, die im GolfScript in 9 Byte übersetzt wurde, und für die Antwort, die zeigte, dass der Stern nur mit den 5 Punkten gezeichnet werden kann. (Wenn ich seine Antwort verwende, kann ich auf 329 Bytes oder 323 Bytes runterkommen, wenn ich an seiner Antwort feile, aber damit bin ich nicht einverstanden).
Mit Inkscape zu 50% exportiert:
Um die Struktur zu sehen, sehen Sie hier die SVG-Datei, die
fill="none"
für alles gerendert wurde, und einige Füllfarben, die in Konturfarben geändert wurden:quelle
SVG (
462 460 454 429 384365 Bytes)Ich weiß, dass es keine Programmiersprache ist, aber ich dachte, dass dies zumindest für jeden nützlich sein wird, der eine SVG-Ausgabe erzeugt ...
Dies basiert auf Peter Taylors SVG.
Durch die Verwendung der ursprünglichen Koordinaten und eine leichte Optimierung der Pfade konnte ich die SVG verkleinern. Ich habe auch die Farben korrigiert.
Update: Fehler behoben , auf den Peter Taylor hingewiesen und die Position der Rechtecke korrigiert und 2 weitere Bytes gespeichert hat.
Update 2: Ein weiteres Update und Vorschläge von Peter (-6 Bytes) wurden eingefügt.
Update 3: Ich habe gerade bemerkt, dass in den Anweisungen jetzt angegeben ist, dass alle Radien 13 sind. Aus diesem Grund habe ich bei der Optimierung der Pfade weitere 25 Byte eingespart. Mehr lesbare Geige hier.
Update 4: Da ich bereits davon ausgehe, dass die SVG-Datei in HTML eingebettet ist (eigenständige SVG-Dateien benötigen die Namespace-Deklaration), kann ich diese tatsächlich weiter auspressen. (a) Ich benötige die Attribute width und height nicht, da die Größe der SVG-Datei kleiner ist als die Standardgröße, die Browser für Objekte festlegen, deren Größe nicht festgelegt ist (300 x 150), und (b) der HTML-Parser verzeiht Attribute, die nicht festgelegt sind Es gibt keine Anführungszeichen, daher können einige von ihnen entfernt werden (Idee von Squeamish Ossifrage ). Spart weitere 45 Bytes.
Update 5: Verwenden Sie die Tricks von hsl , um die Anführungszeichen zu entfernen und die Tags am hinteren Ende zu löschen. Wir haben weitere 19 Bytes gespeichert. Letzteres schien mir anfangs ein bisschen zu schummeln, aber da es in allen Browsern funktioniert, habe ich meine Meinung geändert. :) Danke hsl!
quelle
fill="none"
zur Gruppe oder durch Anpassen der Kurve behoben werden kann .<rect>
sollte eher Höhe haben74
als78
. Und ich machen es zu einem 5-char Spar es mit einem ersetzen<path>
mit beidenfill
undstroke
,stroke-width="18"
wechselte dann in die<g>
und die gemeinsamestroke-width="18"
von zwei Wegen zu der bewegt<g>
. Eine andere<path>
als eine zu haben,<rect>
sollte auch die Kompressibilität ein wenig verbessern.Mathematica
787 612 600 514506 BytesÜberraschend viel Code benötigt. Wird sicher geschlagen.
Ungolfed Form
Golf gespielt
quelle
HTML + ES6, 533
Snippet (modifiziert):
quelle
serif
, die nicht einmal eine bestimmte Schriftart ...HTML + CSS,
676 636625 BytesDies kann man viel spielen, indem man diese entferntJetzt werden Transformationen verwendet, um alles statt zuleft:XXXpx
und eine Art Zentrierung verwendet.zentrierenleft:XXXpx
.Hinweis: Dies funktioniert am besten / wie erwartet in Firefox unter Windows
Das Endergebnis sieht so aus:
quelle
ActionScript 3.0, 491 Byte
Golf Form:
Ausgabe: http://megaswf.com/file/2708781.swf
quelle
var ww=new WarmWelcome(); stage.addChild(ww);
und in Flash mit AS3-Verknüpfung:)
MATLAB R2013a,
551541Dies ist mein erster Code Golf. Also, wenn irgendetwas nicht den Regeln entspricht, bitte lehre / sag es mir :)
Golf Form:
Ausgabe (gerastert):
quelle
LaTeX / TikZ (613 Byte)
Das Ergebnis
pdflatex
ist eine PDF-Datei mit dem Hut als Vektorgrafik und einem engen Begrenzungsrahmen.Ungolfed
Die Werte stammen aus der SVG-Datei, sie waren genauer (enthalten aber auch Rundungsfehler). Der schwierigste Teil waren die dunklen schrägen Linien im Hintergrund. Sie sind als sehr dicke Linie mit gerundeten Linienkappen und Fugen gezeichnet.
quelle
Perl + TK: 555
Die neuen Zeilen dienen nur der Lesbarkeit, obwohl ich so viele Variablen verloren habe.
Hier ist ein Bild:
Ich denke nicht, dass es nahezu pixelgenau ist, aber es ist nah genug :)
quelle