Das Penrose-Dreieck , auch als Penrose-Tribar oder als unmögliches Tribar bekannt, ist ein unmögliches Objekt.
Das Ziel dieser Herausforderung besteht darin, ein Penrose-Dreieck in möglichst wenigen Bytes anzuzeigen.
Quelle: Wikipedia
Regeln:
- Sie müssen das Penrose-Dreieck nach dem Generieren digital anzeigen.
- Sie müssen genauso aussehen wie das obige Bild der Wiki-Seite (Quelle oben), ohne dass das Bild direkt angezeigt wird.
- Das gleiche Bild mit dem gleichen Farbschema muss in einer Größe von mindestens 400x400 angezeigt werden.
- Sollte so genau wie möglich sein.
Viel Glück und hab Spaß!
code-golf
kolmogorov-complexity
graphical-output
Arodebaugh
quelle
quelle
Antworten:
Logo,
129120 BytesZeichnet nur die ersten 4 Seiten jeder L-Form, hebt dann den Stift an, bewegt sich zur entsprechenden Stelle in der nächsten L-Form, senkt den Stift und zeichnet 4 Seiten davon. Jede L-Form leiht 2 Seiten von der vorherigen.
Letzte Änderungen: Wechseln Sie
fd
statt von von schwarzer Fläche zu grauer Flächesetx
und ändern Sie alle Bewegungen vonfd
bisbk
, um ein Byte bei einer Drehung um 180 Grad zu sparen:rt 210
->rt 30
Verkürzensetpencolor
aufsetpc
(undokumentiert in dem von mir verwendeten Interpreter, aber es funktioniert .)Logo, 140 Bytes
Zeichnet die 6 Seiten jeder L-Form, überschreitet die letzte Kante und dreht sich dann um 180 Grad, um die nächste zu starten.
Laufen auf http://www.calormen.com/jslogo/#
Es wird empfohlen, dies
cs pd setpencolor 0
vor dem Laufen zu tun , um sicherzustellen, dass der Bildschirm klar ist, die Schildkröte zentriert ist und nach oben zeigt, der Stift nach unten zeigt und auf Schwarz eingestellt ist (Standardeinstellungen, nicht für eine brandneue Sitzung erforderlich) undht
die Schildkröte auszublenden (st
wird) zeig es nochmal.)quelle
SVG (HTML5), 191 Bytes
quelle
Python 2,
211201195188175173 BytesIst leider
exec
nicht in Trinket implementiert, kann also nicht online getestet werden. Zumindest nicht in der kostenlosen Version. Ich habe den String ausgedruckt und als Code eingefügt, um ihn zu testen. Wenn Sie mit Skripten klug sind, können Sie die Größe von HTML / CSS nach Bedarf ändern, um eine größere Zeichenfläche zu erhalten. Lass es mich wissen, wenn du es tust.Online ausprobieren - Verwendet eine kleinere Größe, da der Erstellungsbereich der Site für 400 Pixel zu klein ist. Sie können jedoch die gesamte Ausgabe anzeigen.
Ungolfed:
quelle
255*n/2
gesenkt werden können, der sich auf128*n
jeden Fall aufrundet. Würde sich also eine Änderung der Pixelfarben ergeben?PHP, 153 Bytes
Dies funktioniert nur, wenn die
short_open_tag
Einstellung aktiviert ist. Der Quellcode enthält nicht druckbare Zeichen. Geben Sie stattdessen einen Hex-Dump ein:Die dekomprimierten Daten sehen folgendermaßen aus (mit Zeilenumbrüchen zur besseren Lesbarkeit):
Obwohl die SVG-Daten nicht vollständig gültig sind, wird sie von PHP
text/html
standardmäßig bereitgestellt. Ohne eine Doctype-Deklaration wird das Dokument im Macken-Modus behandelt, was sehr verzeihend ist.Um die Komprimierung zu verbessern, habe ich das Bild in drei "7" -förmige Teile aufgeteilt, die mit nahezu identischen
<path>
Elementen gezeichnet werden können . Das resultierende Bild wird vergrößert, um das Ansichtsfenster auszufüllen. Hier ist ein Screenshot aus einem 500 × 500 Pixel großen Fenster:quelle
HTML + JS (ES6), 34 + 306 = 340 Byte
Verwendet eine horizontale Neigung von 30 Grad - im dritten Argument der Matrixtransformation wird der Tangens von 30 ° als dargestellt
pow(3,-.5)
.Es gibt einige hässliche magische Zahlen, die nicht ganz den Proportionen des Wikipedia-Bildes entsprechen. Ich bin sicher, dass es einen "mathematischeren" Weg gibt, dies zu tun. Jede Hilfe wäre dankbar.
Siehe die ungolfed Version auf CodePen.
quelle
HTML + CSS, 9 +
315309308 = 317 ByteGrenzen und Schrägstriche in Hülle und Fülle! Getestet auf Chrome. Siehe die ungolfed Version auf CodePen .
quelle
>
, oder?Mathematica 171 Bytes
Zeichnet 3 Polygone mit AnglePath, einem Vielfachen von 60-Grad-Umdrehungen und unter Berücksichtigung des Vorteils, dass der Startpunkt für jedes Polygon der fünfte Punkt des vorherigen Polygons ist.
quelle
AnglePath
.Tcl / Tk, 205
quelle