Bei zwei positiven Ganzzahlen, 'a' und 'b', wird ein ASCII-Kunst- "Kästchen" ausgegeben, das a Zeichen breit und b Zeichen groß ist. Zum Beispiel mit '4' und '6':
****
* *
* *
* *
* *
****
Einfach richtig? Hier ist die Wendung: Der Rand der Box muss die Zeichen "a" und "b" abwechselnd sein. Dies beginnt in der oberen linken Ecke und setzt sich in einer Spirale im Uhrzeigersinn fort. Zum Beispiel sollte das vorherige Beispiel mit 4 und 6 sein
4646
6 4
4 6
6 4
4 6
6464
A und B können zweistellige Zahlen sein. Beispielsweise sollten die Eingänge "10" und "3" Folgendes ausgeben:
1031031031
1 0
3013013013
Um die Ausgabe relativ klein zu halten, müssen Sie keine drei- oder mehrstelligen Zahlen unterstützen. Da Eingaben auf positive Ganzzahlen beschränkt sind, ist '0' eine ungültige Eingabe, die Sie nicht verarbeiten müssen.
Hier sind einige weitere Testfälle:
Input: (3, 5)
Output:
353
5 5
3 3
5 5
353
Input: (1, 1)
Output:
1
Input: (4, 4)
Output:
4444
4 4
4 4
4444
Input: (27, 1)
Output:
271271271271271271271271271
Input: (1, 17)
Output:
1
1
7
1
1
7
1
1
7
1
1
7
1
1
7
1
1
Input: (12, 34):
Output:
123412341234
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
4 1
3 2
2 3
1 4
432143214321
Sie können Eingaben und Ausgaben in jedem vernünftigen Format vornehmen, und Standardlücken sind verboten. Da dies Codegolf ist, gewinnt die kürzeste Antwort in Bytes!
a
es 1 ist, ist es die linke Wand oder die rechte Wand?Antworten:
Pyth ,
6551 BytesProbieren Sie es online!
quelle
C # 301 Bytes
Ich bin mir sicher, dass hier noch viel mehr Golf gespielt werden kann, aber ich bin froh, dass ich eine Lösung gefunden habe, die funktioniert hat.
Ich habe einen Fehler gefunden, bei dem das Endergebnis in der falschen Reihenfolge war, verdammt!
Alte Version: 280 Bytes
quelle
Python 2, 199 Bytes
quelle
Ruby, 128 Bytes
Gibt eine nachgestellte Newline aus, wenn height 1 ist.
Ideone-Link: https://ideone.com/96WYHt
quelle
[w,h]*""
statt"%d%d"%[w,h]
für 4 Bytes auch die Klammern verwendens[q-2,w].reverse
, benötigen dann aber ein Leerzeichen nach dem:
, also -1 Byte.JavaScript,
213212202Es gibt sicherlich Raum für Verbesserungen.
Bearbeiten: Ein Byte dank TheLethalCoder gespeichert
quelle
`${c}${a}`.repeat(l+1)
, Sie könnten ein Byte sparen.W=W.substr(0,a-2).replace(/./g," ")
dasselbe wieW=" ".repeat(a-2)
? (Funktioniert Ihr Code tatsächlich füra=1
?)C 311 Bytes
Verwendet automatisch eingeschlossene Bibliotheken
stdio.h
undstring.h
.quelle
JavaScript (ES6), 171 Byte
Wobei
\n
das wörtliche Zeilenumbruchzeichen darstellt. Erstellt eine sich wiederholende Ziffernfolge und entscheidet dann anhand der Zeile, in der wir uns befinden, was verkettet werden soll. Die obere Reihe ist nur der erste Abschnitt der sich wiederholenden Ziffernfolge, die untere Reihe (falls vorhanden) ist ein umgekehrter Abschnitt von der Mitte der Zeichenfolge, während dazwischen liegende Zeilen aus Zeichen aufgebaut werden, die aus anderen Teilen der Zeichenfolge stammen.quelle
(w,h)=>
,w=>h=>
um ein Byte zu speichernTSQL, 291 Bytes
Golf gespielt:
Ungolfed:
Geige
quelle
Python 3,
155 -148 BytesAb 7 weiteren Bytes golfen:
Ersetzt
2*w+2*h-4or 1
fürmax(1,2*w+2*h-4)
und['',s[-i-1]][w>1]
für(s[-i-1]if w>1else'')
.Vorherige Version:
quelle