Generieren Sie eine ASCII-Wildniskarte.
Beispielausgabe:
................^^^^
..................^^
...^^^^........o....
.....^^^^...........
....................
........o....TT.....
..TTTT..............
TTTT.TTTT....~~~~~~.
..TT..........~~~~~~
....................
Anti-Beispiel (mach das nicht):
....................
...........T........
...^..........oo....
......^.............
....................
..............TT....
T.T.T.T.T........T..
.................T..
T.T.T.T.T..........T
..............TT...T
Regeln:
- Muss mindestens 20x10 Zeichen groß sein
- Muss bei jedem Lauf anders sein, dh zufällig
- Muss durchgehende und unterschiedlich geformte Bereiche von Bäumen 'T', Hügeln '^' und Wasser '~' enthalten, von denen die meisten aus mehr als 5 Zellen bestehen sollten
- Das Standard-Grundzeichen ist '.'
- Muss mindestens 2 Dörfer enthalten, die normalerweise nicht nebeneinander liegen
- Darf keine offensichtlichen Muster wie Rechtecke oder gleichmäßig verteilte Bereiche enthalten - "natürliches Aussehen" ist der Schlüssel
- Sie müssen nicht explizit überprüfen, ob die Regeln eingehalten werden (z. B. keine Anti-Rechteck-Logik erforderlich), aber die große Mehrheit der Läufe (z. B. 80%) muss konforme Ergebnisse liefern
- Fügen Sie Ihrer Einreichung eine Beispielausgabe bei
Wertung:
Der Gewinner hat die niedrigste Punktzahl aus der Formel: code character count
-votes
code-golf
ascii-art
random
generation
Tapio
quelle
quelle
Antworten:
APL (
9976)Ein bisschen länger als nötig (damit es eine bessere Ausgabe gibt), aber ich werde es verkürzen, wenn die Golfscript-Antwort eingeht.Die GolfScript-Antwort wurde veröffentlicht, daher hier eine kürzere. Ich dachte an eine andere (im Nachhinein ziemlich offensichtliche) Möglichkeit, sie so zu verkürzen, dass die Ausgabe nicht viel schlechter als das ursprüngliche Programm und sogar kürzer als mein ursprünglicher Sicherungsplan ist.
(In der alten Version hatte ich fünf Bitfelder, die ich miteinander verknüpft habe, jetzt habe ich drei, die ich einander hinzufüge.)
Ich habe die Beispielausgabe natürlich durch die Ausgabe der neuen Version ersetzt.
Erläuterung:
F←⍳S←10 20
: Größe ist 20x10, F ist eine Matrix, in der jedes Element seine Koordinaten ist{F∊(?S)∘+¨+\{2-?3 3}¨⍳99}¨T←⍳5
: Generieren Sie 3 Bitfelder, indem Sie an einer zufälligen Koordinate beginnen, 99 zufällige Schritte zu einem benachbarten Feld ausführen und dieses Bit dann aktivieren. 99 scheint hoch zu sein, aber es zieht sich oft zurück, da es zufällig ist. Dies macht die Karten für die Gebiete.(⊂7×F∊{?S}¨⍳2)
: In zwei Dörfern hinzufügen.⊃7⌊1++/
: Summieren Sie die Bereiche und geben Sie eine Matrix an, in der jede Zahl einen bestimmten Typ darstellt. Cap es auf 7, weil die Dörfer in einem anderen Gebiet mit hohen Zahlen erscheinen könnten.'.T^~^To'[
...]
: Ersetzen Sie jede Zahl durch das richtige Zeichen. Es gibt 3 möglicherweise überlappende Felder, daher ist der höchstmögliche Wert 6. (3 + 3)Beispielausgabe:
und
Alte Version:
quelle
JavaScript -
294290 ZeichenUm Versuche anzuregen, habe ich mich selbst damit beschäftigt. Sie können eine Live - Demo versuchen hier (Sie benötigen Browser JS - Konsole zu öffnen). Getestet mit Chrome und IE8.
Beispielausgabe:
Es ist nicht ideal, da es immer nur drei Bereiche gibt (einen von jeder Art), deren maximale Größe 5x2 Zellen beträgt und nach einigen Läufen Einschränkungen bei der Platzierung (und der Platzierung der Dörfer) auftreten. Es erfüllt jedoch die Regeln.
quelle
GolfScript, 97 Zeichen
Beispielausgaben:
und
quelle
Ruby 1.9 (
127116112107)Die Ausgabe ist ein bisschen schlicht, aber ich denke, sie entspricht größtenteils der Spezifikation!
Einige Beispielausgaben:
Ein weiterer:
Und wieder:
Aufgrund der Art und Weise, wie es codiert ist, gibt es fast immer einen einsamen Baum. Ich stelle mir gerne vor, dass es der Deku-Baum ist.quelle
Q (
116107 char)Hier ist einer in Q.
Beispielausgabe
und
und
Ich kann die stochastische Matrix anpassen, um die Ausgabe zu beeinflussen, aber ich denke, dass das oben Gesagte dem entspricht, wonach Sie suchen.
/ edit: optimierte Ausgabe
/ edit: Die Anzahl der Zeichen wurde reduziert, indem nur 2 Dörfer hinzugefügt wurden
quelle
K, 84
Ausgabe:
und
quelle