Zusammenfassung
Wenn eine Eingabe gegeben wird, die zwei Vektoren und ihre jeweiligen "Gewichte" darstellt, wird eine Ausgabe erzeugt, die auch die gewichtete Summe dieser Vektoren darstellt.
Herausforderung
Die Eingabe besteht aus einer oder mehreren Zeilen mit folgenden Zeichen:
- genau ein Vorkommen der Ziffer 0, die den Ursprung in einer zweidimensionalen Ebene darstellt;
- genau zwei andere Ziffern (1-9; kann dieselbe Ziffer sein oder nicht), deren Positionen relativ zum Ursprung Vektoren darstellen und deren Werte die Gewichte darstellen, die diesen Vektoren zugeordnet sind;
- eine Anzahl von "Hintergrundzeichen". Der Löser kann ein bestimmtes Hintergrundzeichen auswählen. Zum Beispiel werde ich "." (hauptsächlich für die menschliche Lesbarkeit). Alternativ können die Hintergrundzeichen alles sein, was wie ein Leerzeichen aussieht.
(Der Solver kann wählen, ob die Eingabe eine einzelne mehrzeilige Zeichenfolge oder ein Array von einzeiligen Zeichenfolgen ist.)
Zum Beispiel die Eingabe
....2
.0...
...3.
repräsentiert einen Vektor an Koordinaten (3,1) mit Gewicht 2 und einen Vektor an Koordinaten (2, -1) mit Gewicht 3.
Die Ausgabe sollte mit den folgenden Änderungen fast identisch mit der Eingabe sein:
- ein "Ergebniszeichen", das vom Löser ausgewählt wird und an der Position hinzugefügt wird, die durch die gewichtete Summe der Eingabevektoren angegeben wird (äquivalent an der Position, die die geeignete lineare Kombination der Eingabevektoren ist);
- Es werden so viele Hintergrundzeichen benötigt, wie für den Ursprung, die beiden Eingabevektoren und den Ausgabevektor im selben Bild erforderlich sind. Falls gewünscht, können zusätzliche Hintergrundzeichen eingefügt werden. Die einzige Einschränkung besteht darin, dass, wenn das Hintergrundzeichen ein sichtbares Zeichen ist, die gesamte Ausgabe eine rechteckige Form haben muss und jedes Zeichen, das keinen Vektor darstellt, das Hintergrundzeichen sein muss. (Wenn Leerzeichen als Hintergrundzeichen verwendet werden, müssen diese Einschränkungen nicht erzwungen werden.)
(Wenn wir im Allgemeinen einen Vektor (v, w) mit Gewicht a und einen zweiten Vektor (x, y) mit Gewicht b haben, ist ihre gewichtete Summe a (v, w) + b (x, y) = (av + bx, aw + von).)
Im vorherigen Beispiel ist die geeignete lineare Kombination 2 * (3,1) + 3 * (2, -1) = (12, -1). Wenn wir "X" als Ergebniszeichen verwenden, könnte die Ausgabe so aussehen
....2.........
.0............
...3.........X
oder
................
...2............
0...............
..3.........X...
................
................
Übliche Code-Golf- Wertung: Die kürzeste Antwort in Byte gewinnt.
Beispiel für Ein- und Ausgabe
Wenn Leerzeichen verwendet werden, sieht die obige Eingabe folgendermaßen aus
2
0
3
und die Ausgabe würde so aussehen
2
0
3 X
Führende / nachfolgende Leerzeichen / Zeilen sind irrelevant. Wenn sie für den Leser unsichtbar sind, ist es in Ordnung. (Abgesehen davon werde ich für den Rest der Beispiele wieder "." Für das Hintergrundzeichen verwenden, um das Lesen zu erleichtern.)
Wenn beide Vektoren das Gewicht 1 haben, sieht das Ergebnis wie ein Parallelogramm aus: die Eingabe
.1.
...
1.0
führt zum Ausgang
X.1.
....
.1.0
Beachten Sie, dass dieses Parallelogramm entartet sein kann, wenn die Eingabevektoren kollinear sind: die Eingabe
0.1..1
führt zum Ausgang
0.1..1.X
Es ist möglich, dass der Ergebnisvektor einem der Eingabevektoren oder dem Ursprung entspricht; In diesem Fall wird das Eingabezeichen einfach überschrieben. Zum Beispiel die Eingabe
..2.0.1...
ergibt die Ausgabe
..X.0.1...
(wobei bei der Eingabe und / oder Ausgabe die führenden und nachfolgenden Perioden gelöscht werden könnten). Die Eingabe
.....3
......
...0..
......
......
2.....
ergibt die Ausgabe
.....3
......
...X..
......
......
2.....
Zum Schluss die Eingabe
90
.8
ergibt die Ausgabe
........90
.........8
..........
..........
..........
..........
..........
..........
X.........