Nehmen Sie zwei Listen nicht-negativer Ganzzahlen und geben Sie eine ASCII-Box wie unten definiert aus.
- Ecken und Schnittpunkte sind Pluspunkte:
+
(ASCII-Code 43) - Vertikale Linien sind Striche
|
(ASCII-Code 124) - Horizontale Linien sind Minuspunkte
-
(ASCII-Code 45)
Die erste Eingabeliste gibt die Anzahl der Minuspunkte zwischen den einzelnen Pluszeichen in horizontaler Richtung an.
Die zweite Eingabeliste gibt die Anzahl der Striche zwischen den einzelnen Pluszeichen in vertikaler Richtung an.
Es ist einfacher, mit ein paar Beispielen zu erklären:
0 // No minuses between each + sign
0 // No bars between + signs
++
++
------------------
1 2 // First a single minus, then two minuses
1 2 // First one bar, then two bars
+-+--+
| | |
+-+--+
| | |
| | |
+-+--+
------------------
1 0 3 0 2 0
2 1 0 0
+-++---++--++
| || || ||
| || || ||
+-++---++--++
| || || ||
+-++---++--++
+-++---++--++
+-++---++--++
Klarstellungen:
- Eingabereihenfolge und Format sind optional
- Es sollten nur die Felder gedruckt / angezeigt werden, ein Leerzeichen oder Zeilenumbrüche werden jedoch akzeptiert.
- Sie können optional 1 zu allen Eingabewerten hinzufügen, wenn dies praktischer ist. Das zweite Beispiel wäre dann:
2 3; 2 3
.
Das ist Code Golf, also gewinnt der kürzeste Code in Bytes.
Antworten:
MATL ,
252221 BytesVerwendet Eingaben mit
1
zusätzlichen (von der Herausforderung zugelassenen).Probieren Sie es online!
Erläuterung
Der Code erstellt zunächst ein Array mit
1
den Spaltenindizes für Nicht-Leerzeichen im Endergebnis0
. Wenn also die erste Eingabe im 0-basierten Format ist[2 1 4 1 3 1]
(wäre[1 0 3 0 2 0]
), ist dies ein ArrayBeachten Sie, wie die Länge der Nulldurchläufe mit der Eingabe zusammenhängt. Insbesondere ist dieses Array wie folgt aufgebaut:
1
.1
. Im Beispiel gibt dies[3 4 8 9 12 13]
.1
zu den Einträgen mit (1-basierten) Indizes, die in Schritt 2 angegeben sind. Zwischeneinträge werden automatisch auf festgelegt0
.Ein ähnliches Array wird für die Zeilen erstellt. Zweiter Eingang
[3 2 1 1]
(oder[2 1 0 0 ]
) gibtNun wird das zweite Array mit multipliziert
2
, transponiert und mit Broadcast zum ersten hinzugefügt. Dies ergibt das 2D-ArrayIndizieren in den String
'|-+ '
ergibt das Endergebnis als 2D-Zeichen-Array. Da die Indizierung modular und 1-basiert ist,0
entspricht der Index dem letzten Element (Leerzeichen).quelle
Python 2, 117 Bytes
Probiere es auf ideone aus.
Ich erwarte nicht zu viel davon. Ganz einfach: Verwenden Sie einfach Python-Joins und String-Multiplikation, um alles zusammenzuführen.
quelle
JavaScript (ES6), 83 Byte
Die Ausgabe enthält zwei nachgestellte Zeilenumbrüche.
quelle
CJam, 50 Bytes
Probieren Sie es online!
quelle
Pyth, 45 Bytes
Ein Programm, das zwei durch Kommas getrennte Listen in STDIN eingibt und das Ergebnis ausgibt.
Hier gibt es wahrscheinlich noch einiges zu golfen.
Probieren Sie es online aus
Erklärung kommt später
quelle
Haskell, 55 Bytes
Definiert eine Funktion,
g
die die beiden Eingabelisten aufnimmt und eine Liste mit den Zeilen der Ausgabe zurückgibtquelle
PowerShell v2 +, 89 Byte
Verdammt, ich glaube nicht, dass ich JavaScript richtig einfangen kann.
Übernimmt Eingaben
$a
und$b
als explizite Arrays. Setzt die Variable$x
auf die oberste Zeile der Felder, basierend auf dem Durchschleifen$a
und einer gewissen Verkettung von Zeichenfolgen. Das ist in Parens eingekapselt, damit es in der Pipeline platziert wird. Dann durchlaufen wir eine Schleife$b
, wobei jede Iteration zwei Zeichenfolgen in die Pipeline einfügt - dieselbe Zeichenfolge mit Leerzeichen und|
anstelle von Bindestrichen und+
und$x
. Diese Zeichenfolgen werden alle mit einem implizitenWrite-Output
Zeilenumbruch bei Programmabschluss aus der Pipeline abgerufen.Beispiele
quelle
Ruby, 66 Bytes
quelle
Gelee ,
3026 BytesTesten Sie es bei TryItOnline
Wie?
Die Eingabe ist eine Liste der beiden Listen
[vertical, horizontal]
und verwendet die inkrementierte Option.Beispiel 3 Takes
[[3,2,1,1], [2,1,4,1,3,1]]
Jedes von diesen wird dann in ein boolesches Array konvertiert, das den rowType bzw. rowCharacterType angibt.
[[1,0,0,1,0,1,1,1], [1,0,1,1,0,0,0,1,1,0,0,1,1]]
Die Boxen werden dann konstruiert, indem die Zeilen aus erstellt werden Die durch die Kombinationen rowType und rowCharacterType identifizierten Zeichen - dh ein rowType identifiziert entweder
"+-"
oder"| "
und ein rowCharacterType identifiziert eines dieser beiden Zeichen.quelle