Dies ist ein 3x3
ASCII-Puzzle:
_____ _____ _____
| _| |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _) |
|_____|_____|_____|
Dies ist auch ein 3x3
ASCII-Puzzle:
_____ _____ _____
| |_ _| |
| _ _) (_ _ |
|_( )_|_ _|_( )_|
| _| (_) |_ |
| (_ _ _) |
|_ _|_( )_|_ _|
| (_) |_ _| (_) |
| _) (_ |
|_____|_____|_____|
Jede Zeile in einem ASCII-Puzzle (mit Ausnahme der Kantenfälle, dh der Teile, die buchstäblich an den Kanten liegen) besteht aus folgendem Muster:
_ _ _
_( )_ _ _ _( )_ _ _ _( )_
|_ _| (_) |_ _| (_) |_ _|
_) (_ _ _) (_ _ _) (_
|_ _|_( )_|_ _|_( )_|_ _| ...
(_) (_) (_)
Bei 2 Ganzzahlen H
und W
wo H
ist die Höhe (vertikaler Betrag) und W
die Breite (horizontaler Betrag) und H
und W
wird >1
ein mögliches HxW
ASCII-Puzzle ausgegeben .
Beispiele
Testfall 1
Eingang: 2, 4
Ausgabe:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Testfall 2
Eingang: 4, 4
Ausgabe:
_____ _____ _____ _____
| |_ _| |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _ _) (_ _ |
|_ _|_( )_|_ _|_( )_|
| (_) |_ _| (_) |_ |
| _ _) (_ _ _) |
|_( )_|_ _|_( )_|_ _|
| _| (_) |_ _| (_) |
| (_ _) (_ |
|_____|_____|_____|_____|
Testfall 3
Eingang: 3, 5
Ausgabe:
_____ _____ _____ _____ _____
| |_ _| |_ _| |
| _ _) (_ _ _) (_ _ |
|_( )_|_ _|_( )_|_ _|_( )_|
| _| (_) |_ _| (_) |_ |
| (_ _ _) (_ _ _) |
|_ _|_( )_|_ _|_( )_|_ _|
| (_) |_ _| (_) |_ _| (_) |
| _) (_ _) (_ |
|_____|_____|_____|_____|_____|
Testfall 4
Eingang: 2, 2
Ausgabe:
_____ _____
| _| |
| (_ _ |
|_ _|_( )_|
| (_) |_ |
| _) |
|_____|_____|
Klarstellungen
- Die Höhe und Breite jedes Puzzleteils sollte nicht vergrößert oder verkleinert werden.
- Bei
H
undW
größer als eins sind die kleinstmöglichen Abmessungen2x2
(siehe IO 4). - Sie können ein vollständiges Programm oder eine Funktion haben.
- Die Eingabe besteht aus 2 Zeilen, wobei
H
in der 1. undW
in der 2. Zeile, wenn Sie eine Funktion verwenden, diese in den Parametern angegeben werden können. - Ausgabe auf stdout (oder ähnliches).
- Dies ist Code-Golf, also gewinnt die kürzeste Antwort in Bytes.
Antworten:
JavaScript (ES6) 272
277 271Fehlerbehebung bearbeiten
Bearbeite 2 gespeicherte 6 Bytes thx @ L.Serné
Bearbeiten Sie erneut 3 Bugfixes
Weniger golfen
Prüfung
quelle
for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;a='|_ _| (_) ')
folgt einfügen :. Dadurch werden 4 Kommas gespeichert, und Sie erhalten nur 273 Zeichen BEARBEITEN: Das Test-Snippet ist immer noch fehlerhaft ...t=...
in das for setzen, es schlägt fehl für h == 2. Es ist genau der Fehler, den ich heute behoben habe.undefined
deklarieren hat sicha
im letzten teil derfor
schleife herausgestellt. Ich habe den Code ein wenig geändert und bin dabei gelandet. Sie sollten in der Lage sein, dies mit dem eval für einen weiteren 2B-Save zu integrieren.(w,h,z=(s,q=3,i=h)=>'| '.slice(0,q)+s.repeat(w).substr(i%2*6+q,w*6-2*q+1)+' |\n'.slice(~q),a='|_ _| (_) ')=>{for(t=z(' _____',0,0)+z('|_ _| ',2,--h)+z(b=' _) (_ _ ')+z(c='|_ _|_( )_',0);--h;)t+=z(a,2)+z(b)+z(c,0);return t+z(a,2)+z(' _) (_ ')+z('|_____',1)}
(276B).Python, 513 Bytes
Vielleicht ist dies eher eine Übung zur Verschleierung als zum Golfen, bei der entschieden wird, zu welchem Charakter jede
(x,y)
Koordinate gehört, anstatt jedes Muster durch eine Zeichenfolge aufzubauen. Ungolfed sieht es ausDie Muster selbst sehen aus wie
Wir können dies als eine Nachschlagetabelle von ganzen Zahlen mit Spalten sehen, die mod 6 und Zeilen mod 3 entnommen wurden
Diese Strategie, verschiedene Muster zu kombinieren, hat sich für mich hier nicht wirklich bewährt, weil das Ausdrücken ziemlich umständlich ist (obwohl ich glaube, dass ich mehr hätte Golf spielen können) und weil die Randfälle so viele Zeichen zum Reparieren benötigen. Ich mache das trotzdem, weil ich eine Minute gebraucht habe und es von Interesse sein könnte.
quelle
Mathematica, 384 Bytes
Unbenannte Funktion, die ein geordnetes Ganzzahlpaar als Argument verwendet und eine Zeichenfolge mit entsprechenden Zeilenumbrüchen zurückgibt. Mit Leerzeichen und Zeilenumbrüchen:
quelle
Batch,
562528 BytesEs hat sich als widerstandsfähig gegen Golf erwiesen, da die Wiederholung zu viele Bytes kostete, um sie zu eliminieren. Ich übergebe die Zeilennummer Mod 3 manuell, weil die Berechnung zu teuer ist. Edit: Außerdem hatte ich versehentlich
|
jede dritte Zeile extra golfen , was falsch ist. Durch das Beheben dieses Problems habe ich 2 Bytes gespart (4 Bytes bei meiner ursprünglichen Version). Erklärung:a
enthält verschiedene Puzzleteile. Die:t
Funktion tauscht sie über jede Gruppe von drei Zeilen aus und extrahiert dann die erforderlichen Teilzeichenfolgen, die die:c
Funktion dann paarweise wiederholt, löscht jedoch die erste Spalte, wennw
ungerade ist. Die Fälle am linken und rechten Rand werden dann behandelt, bevor die Zeile ausgegeben wird.Der andere Kantenfall ist die allererste Zeile, in der die!
Zeichen statt in Leerzeichen geändert werden|
s (der Code vermeidet|
s, weil sie in Batch schwierig zu handhaben sind).quelle
Befunge,
263243 BytesProbieren Sie es online!
Dies funktioniert, indem Sie die x, y-Koordinaten des auszugebenden Bereichs durchlaufen und diese x , y- Werte den u , v- Koordinaten im Puzzlemuster (in den ersten drei Zeilen des Spielfelds gespeichert) zuordnen. Diese Zuordnung wird mit den folgenden Grundformeln erreicht:
Die u- Koordinate wird alle 12 Spalten wiederholt, muss jedoch alle 3 Zeilen um 6 versetzt werden. Die v- Koordinate wird alle 3 Zeilen wiederholt, aber wir addieren
y==0
den Wert, damit die allererste Zeile als Sonderfall gerendert werden kann. Um die Kanten zu behandeln, müssen wir jedoch einen zusätzlichen booleschen Wert e einfügen , der für verschiedene Kantenpositionen gilt und die Formeln wie folgt anpasst:Wenn wir uns also an einer Kante befinden, addieren wir 4 zur v- Koordinate, um das einfachere Kantenmuster in den Zeilen 5 bis 7 zu verwenden. Außerdem müssen wir jetzt die u- Koordinate um 6 statt 12 ändern, da dieses Kantenmuster Wiederholt alle 6 Spalten.
Für den e- Wert selbst ist eine ziemlich komplexe Formel erforderlich, da die Kantenpositionen einen etwas unregelmäßigen Bereich des Puzzle-Randes umfassen.
Ohne zu sehr ins Detail zu gehen, besteht die grundlegende Aufteilung darin, dass elr den Kantenpositionen entlang des linken und rechten Randes entspricht , während etb Positionen entlang des oberen und unteren Randes entspricht.
quelle
JavaScript (ES6), 285 Byte
Dies ist eine Portierung meiner Batch-Antwort, um zu sehen, ob sie mit der Antwort von @ edc65 konkurriert. Die nervig lange Saite enthält Puzzleteile. Die ersten sechs Teile stehen für zwei Reihen einer Spalte im Inneren des Puzzles. Das siebte Stück wird anstelle des vierten Stücks für die vorletzte Linie der Stichsäge verwendet. Das achte Teil wird in der zweiten Zeile der Stichsäge anstelle des fünften Teils verwendet und hat auch die doppelte Funktion als linker Rand der Stichsäge. Das neunte Stück ist die letzte Zeile des Puzzles.
quelle