Herausforderung
Dies ist eine einfache Herausforderung. Bei zwei positiven ganzen Zahlen w
und h
erstellen Sie einen ASCII-Zaun mit einer Breite w
und einer Höhe von h
. Der Zaun sollte nach folgenden Regeln gebaut werden:
- Der
+
Charakter wird einen Beitrag darstellen. - Das
-
Zeichen wird verwendet, um die Breite des Zauns darzustellen. - Das
|
wird verwendet, um die Höhe des Zauns darzustellen. - Nachdem genau drei
-
Zeichen ausgegeben wurden, muss ein+
Zeichen danach ausgegeben werden. Mit Ausnahme der vier Ecken ist jedes andere Mal, wenn Sie a ausgeben , ungültig. Sie können diese Regel entweder von links oder von rechts aus befolgen (siehe Beispiele), aber Sie müssen konsistent sein.+
- Nachdem genau zwei
|
Zeichen ausgegeben wurden, muss ein+
Zeichen danach ausgegeben werden. Mit Ausnahme der vier Ecken ist jedes andere Mal, wenn Sie a ausgeben , ungültig. Sie können diese Regel entweder von oben oder von unten aus befolgen (siehe Beispiele), müssen jedoch konsistent sein.+
- Jeder Zaun hat genau vier Ecken und jede Ecke wird mit einem dargestellt
+
.
Mit anderen Worten: Bei jeweils drei -
Zeichen müssen Sie a ausgeben +
. Und bei jeweils zwei |
Zeichen müssen Sie a ausgeben +
.
Sie können davon ausgehen, dass der Zaun immer ein Rechteck sein wird und dass beide w
und h
niemals größer 100
oder kleiner als sein werden 1
. Leerzeichen dürfen nach- und / oder vorangestellt werden.
Beispiele / Testfälle
w = 1
h = 1
+-+
| |
+-+
w = 3
h = 2
+---+
| |
| |
+---+
w = 5
h = 7
+---+--+ or +--+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+--+ +--+---+
w = 10
h = 5
+---+---+---+-+ or +-+---+---+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+---+---+-+ +-+---+---+---+
w = 4
h = 4
+---+-+ or +-+---+
| | | |
| | | |
+ + + +
| | | |
| | | |
+---+-+ +-+---+
Regeln
- Es gelten Standardlücken .
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes!
+
berühren?+-+-+-+-+-+
ungültig ist. Entschuldigung für die Verwirrung.Antworten:
C 131 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Python 3 ,
140137128119106105 BytesProbieren Sie es online!
quelle
in
und[w+1+(w-1)//3]]
im letzten Teil entfernen .'\n') for
. Sie können auch ändern,(w-1)
auf~-w
welche Weise Sie die Klammern entfernen können, da unäre Operatoren eine höhere Priorität haben als binäre. Gleiches gilt für(h-1)
->~-h
und(a-1)
->~-a
. Versuchen Sie es online - 128 Bytesdef f(w,h)
dieselbe Länge wielambda w,h
, können jedoch mehrere Zeilen verwenden, wenn dies Ihnen dabei hilft, Ihren Code weiter zua=~-w//3-~w;
1 Byte speichernMathematica, 165 Bytes
quelle
Pip , 38 Bytes
37 Byte Code, +1 für
-n
Flag.Übernimmt width und height als Befehlszeilenargumente. Probieren Sie es online!
Erläuterung
quelle
Holzkohle,
474540 BytesErläuterung: Werke von jeder Seite Zeichnung
-
s /|
s wiederum Einsetzen+
s bei Bedarf dann mit einem Finishing+
. Nachdem Sie die obere und die rechte Seite gezeichnet haben, springen Sie zum Anfang zurück, um sie in umgekehrter Reihenfolge zu zeichnen. Dabei werden die linke und die untere Seite effektiv gezeichnet. Ich weiß nicht, ob Rotationssymmetrie zulässig ist, aber wenn ja, dann für2725 Bytes:Bringt die obige Idee auf das Äußerste, indem Sie die Oberseite zeichnen, nach links drehen, die rechte Seite zeichnen, erneut drehen und dann wiederholen, um die untere und die linke Seite in umgekehrter Reihenfolge zu zeichnen.
quelle
JavaScript (ES6),
133132 BytesNimmt die Eingabe in currying Syntax:
f(width)(height)
.Testschnipsel
quelle
Pyth , 40 Bytes
Testsuite .
quelle
Java (OpenJDK 8) ,
178177 BytesProbieren Sie es online!
-1 Byte dank @KevinCruijssen
quelle
w->h->
Probieren Sie es hier aus.Charcoal ,
47 4537 BytesProbieren Sie es online!
Ein anderer Ansatz als bei @ Neil : Zuerst erstelle ich die Zeichenfolgen
α
undβ
füge die Zeichen in die horizontalen und vertikalen Ränder ein. Dabei verwende ich denRange
Operator, der eine Wiederholung der Zeichenfolge erstellt, bis eine bestimmte Länge erreicht ist. Dann drucke ich sie in der richtigen Reihenfolge aus:Link zu einer ausführlichen Version .
quelle
Range
, dass Sie mich daran erinnert haben , dass bei meinem zweiten Ansatz 3 Bytes gespart werden!A…+---÷⁺²×⁴N³αA…+||÷⁺¹×³N²βPα↓βα+↖↑⮌β
.05AB1E , 58 Bytes
Probieren Sie es online!
Härter in 05AB1E als ich dachte.
quelle