Die Ausgabe ist eine Form, die 1009 Pixel einschließt.
- Die Form muss die Form einer einzelnen, geschlossenen, sich nicht schneidenden Schleife haben.
Die Eingabe ist eine positive Ganzzahl ungleich Null.
- Jede Eingabe muss eine eindeutige Ausgabe liefern - das heißt, jede Ausgabe muss eine eindeutige Ausgabe sein, die mit einer niedrigeren Eingabe generiert wird.
Der Sieg wird durch die größte Eingabegrenze entschieden:
- Das Eingabelimit Ihrer Übermittlung wird als 1 weniger als die niedrigste Eingabe angesehen, die eine nicht eindeutige oder anderweitig ungültige Ausgabe ergibt.
- Wenn beispielsweise eine gültige und eindeutige Ausgabe für eine Eingabe von 1, 2 oder 3, jedoch nicht von 4 erstellt wird, liegt die Eingabegrenze bei 3.
Der Quellcode ist auf 1009 Byte begrenzt. Bei einem Unentschieden gewinnt der Eintrag mit den wenigsten Bytes.
Einschränkungen und Erläuterungen:
- Die maximale Größe einer Form beträgt 109 x 109 Pixel. Die Größe enthält die Linie, mit der die Form gezeichnet wurde.
- Eine Linie hat eine konstante Breite.
- Der umschlossene Raum muss vollständig von der Linie umschlossen sein - Sie können den Rand der Bilddatei nicht verwenden.
- Die eingeschlossenen 1009 Pixel beziehen sich nur auf den eingeschlossenen Raum. Die Zeile ist nicht enthalten.
- Ausgabe ist ein Bild.
- Es gibt keine weiteren grafischen Einschränkungen - zB bezüglich Farbe, Strichstärke etc.
- Die Einzigartigkeit einer Ausgabe bezieht sich nur auf den umschlossenen Raum. Änderungen an der Linie oder andere grafische Änderungen sind irrelevant, wenn der umschlossene Raum nicht eindeutig ist.
- Eine Übersetzung von Form ist nicht eindeutig. Rotationen, Reflexionen und andere Transformationen gelten als einzigartig.
- Die Ausgabe muss reproduzierbar sein - dieselbe Eingabe gibt immer dieselbe Ausgabe
- Es muss keine Beziehung zwischen aufeinanderfolgenden oder anderen Ausgaben geben.
- Außerhalb der Eingabegrenze einer Übermittlung gibt es keine definierte Ausgabe.
- Eine anderweitige Eingabe oder das Abrufen von externen Daten ist nicht gestattet.
- Eine Linie muss durchgehend sein - dh Pixel müssen sich berühren (Berühren einer Ecke zählt).
- Ein Pixel ist die kleinste Zeicheneinheit, die von Ihrer Zeichenmethode verwendet wird, und entspricht nicht unbedingt einem Bildschirmpixel.
Beispiele:
Hier ist ein Beispiel für eine gültige Form:
Die folgenden Formen sind ungültig:
BEARBEITEN: Linie berühren:
- Der umschlossene Raum muss durchgehend sein, was als Pixel definiert wird, die sich berühren. Das Berühren von Ecken zählt.
Eine Linie darf an ihrer Außenseite kein Leerzeichen enthalten. Dieses Bild von @Sparr zeigt diesen Punkt - nur die erste Form in jeder Zeile ist gültig:
Die Außenseiten einer Linie dürfen sich berühren, aber nicht in einer Weise, die den Raum einschließt.
- Berührungslinien dürfen sich nicht überlappen - z. B. hätten zwei sich berührende 1 Pixel dicke Linien eine kombinierte Dicke von 2 Pixel, niemals 1 Pixel.
Antworten:
Python + Pycairo, 2 100 Formen
Beginnen wir mit dem Offensichtlichen.
Nimmt die Nummer in die Kommandozeile und schreibt
o.png
.quelle
Rotations [...] count as unique.
BBC Basic, Punktzahl 10 ^ 288 (minus 1, wenn die Null nicht gezählt wird)
Laden Sie interepreter unter http://sourceforge.net/projects/napoleonbrandy/ herunter. (nicht mein üblicher BBC-Interpreter, der nicht lange genug Zeichenfolgen unterstützt).
Um viele Informationen zu kodieren, benötigen Sie viele Perimeter. Das bedeutet eine dünne Form. Ich beginne mit einem vertikalen Balken von 49 Pixel links und füge zehn Tentakeln von 96 Pixel hinzu. Jedes Tentakel kann 96 Bit, also insgesamt 960 Bit, auf ähnliche Weise wie die @ ell-Lösung codieren.
Da BBC Basic keine so großen Zahlen verarbeiten kann, werden bis zu 288 Dezimalstellen als Zeichenfolge eingegeben, und jede Gruppe von 3 Dezimalstellen wird in eine 10-Bit-Binärzahl konvertiert. Jedes Bit wird dann verwendet, um einen der Tentakel um ein Pixel nach oben zu wackeln, wenn es sich um einen handelt
1
(aber nicht, wenn es sich um einen handelt0
). Das Programm kann bis zu 288/3 = 96 solcher Sätze von 3 Ziffern verarbeitenAusgabe
Eine typische Ausgabe für eine 288-stellige Zahl. Beachten Sie, dass 999 binär 1111100111 ist. Sie können sehen, wie die 9-stelligen Sätze bewirken, dass die Tentakel wellenförmig sind.
Technische Details
A. Die Antwort auf Martins Punkt 3 "Ist die Form verbunden, wenn sich die Pixel nur entlang einer Ecke berühren?" war "ja" so verstehe ich meine antwort entspricht. Wenn Sie jedoch (zum Beispiel) 999er und 000er in jeder Zeile abwechseln, sieht es sehr beschäftigt aus.
B. Wenn wir dies als ein Rechteck mit seitlich herausgenommenen Bissen betrachten, können Sie sehen, dass ich drei Pixel zwischen jedem Paar benachbarter Tentakeln zulasse, um sicherzustellen, dass sich die schwarze Linie um die Außenseite niemals selbst berührt. Hierfür gibt es keine spezielle Regel (ich hoffe, mein Grund für die Anfrage ist im Lichte meiner Antwort klarer.) Wenn die Linie sich AUSSEN an der Form berühren darf, könnte ich die Tentakel zusammen bewegen und weniger Pixel für verwenden Die vertikale Leiste (und damit die Tentakeln ein bisschen länger machen.) Es würde jedoch sehr verwirrend werden, mit dem Auge zu bestimmen, ob ein Pixel innerhalb oder außerhalb der Form liegt, daher denke ich, dass sich die Außenseite der schwarzen Linie niemals berühren sollte selbst ist am besten.
C. BBC basic behandelt in diesem Bildschirmmodus ein 2x2-Quadrat von Bildschirmpixeln als ein einzelnes Pixel. Ich habe das so belassen, weil es beim Betrachten hilft, wenn die Form nicht zu klein ist. Jedes dieser BBC-Grundpixel wird als Box mit 4 × 4 logischen Einheiten betrachtet. Die Entwickler von BBC basic hatten von Anfang an die Voraussicht, dass sich die Bildschirmauflösung eines Tages erhöhen würde, und haben die logische Auflösung daher höher als die physikalische Auflösung gewählt.
quelle
Mathematica, 496 Bytes, Score: groß (> 1157)
Die Untergrenze, die ich dort habe, ist lächerlich niedrig, aber ich habe noch keinen besseren Weg gefunden, als brutale Gewalt zu überprüfen.
Ich habe das noch nicht golfen, weil es nicht nötig war. Ich mache das, sobald jemand beweist, dass er tatsächlich mit mir zu tun hat.
Der Algorithmus füllt das 109x109-Bild im Grunde genommen von der oberen linken Ecke aus (um einen Pixel versetzt, um die Linie zu berücksichtigen). Wenn ich 1009 Zellen geflutet habe, halte ich an und markiere den Rand. Sie sagten, die Farben liegen bei uns, der Hintergrund ist also weiß, die Linie ist schwarz und das Innere ist grau (ich kann das Grau für eine Handvoll Zeichen entfernen, wenn nötig).
Die Flutfüllung ist ziemlich begrenzt, aber das stellt sicher, dass ich mich nicht um Löcher kümmern muss. Die Lockerung dieser Einschränkungen wird wahrscheinlich meine (noch unbekannte) Punktzahl dramatisch erhöhen.
Ich werde jetzt versuchen, ein paar niedrigere Grenzen für die Partitur zu setzen.
quelle
Python 2, Score> 10 ^ 395
Es ist extrem langsam, und ich habe es tatsächlich nicht geschafft, ein anderes Ergebnis als n = 0 zu erhalten, aber wenn Sie es niedriger testen möchten
SIZE
(die Anzahl der Pixel) undBOUND
die maximale Seitenlänge des Begrenzungsquadrats und Sie sollten in der Lage sein viele Ergebnisse zu erzielen. Es war sehr schwierig zu berechnen, wie viele es produzieren würde; Ich bin mir ziemlich sicher, dass die von mir angegebene Untergrenze korrekt ist, aber ich vermute, dass die tatsächliche Anzahl bedeutend höher ist, und ich kann versuchen, sie später zu verbessern.quelle
n=0
? Und kannst du auch erklären, wie du 10 ^ 395 erreichst?