Sintesi
Dato un input che rappresenta due vettori e i loro rispettivi "pesi", produce un output che rappresenta anche la somma ponderata di quei vettori.
Sfida
L'input sarà costituito da una o più righe dei seguenti caratteri:
- esattamente un'occorrenza della cifra 0, che rappresenta l'origine in un piano bidimensionale;
- esattamente altre due cifre (1-9; può essere o meno la stessa cifra), le cui posizioni relative all'origine rappresentano i vettori e i cui valori rappresentano i pesi associati a questi vettori;
- un certo numero di "personaggi di sfondo". Il risolutore può scegliere un carattere di sfondo specifico; per esempio, sceglierò "." (principalmente per la leggibilità umana). In alternativa, i personaggi di sfondo possono essere qualsiasi cosa che assomigli a uno spazio vuoto.
(Il solutore può scegliere se l'input è una stringa a più righe o un array di stringhe a una riga.)
Ad esempio, l'input
....2
.0...
...3.
rappresenta un vettore alle coordinate (3,1) con peso 2 e un vettore alle coordinate (2, -1) con peso 3.
L'output dovrebbe essere quasi uguale all'input, con le seguenti modifiche:
- un "carattere risultato", scelto dal solutore, da aggiungere nella posizione specificata dalla somma ponderata dei vettori di input (equivalentemente, nella posizione che è la combinazione lineare appropriata dei vettori di input);
- tutti i caratteri di sfondo necessari per adattarsi all'origine, ai due vettori di input e al vettore di output nella stessa immagine. Se lo si desidera, è possibile includere caratteri di sfondo aggiuntivi; l'unico vincolo è che, se il carattere di sfondo è un carattere visibile, l'intero output deve essere di forma rettangolare e ogni carattere che non rappresenta un vettore deve essere il carattere di sfondo. (Se lo spazio vuoto viene utilizzato come caratteri di sfondo, non è necessario applicare questi vincoli.)
(In generale, se abbiamo un vettore (v, w) con peso a e un secondo vettore (x, y) con peso b, la loro somma ponderata è a (v, w) + b (x, y) = (av + BX, aw + da).)
Nell'esempio precedente, la combinazione lineare appropriata è 2 * (3,1) + 3 * (2, -1) = (12, -1). Se utilizziamo "X" come carattere risultante, l'output potrebbe apparire come
....2.........
.0............
...3.........X
o
................
...2............
0...............
..3.........X...
................
................
Punteggio di golf di codice abituale : la risposta più breve, in byte, vince.
Esempio di input e output
Se viene utilizzato uno spazio vuoto, l'aspetto sopra riportato sarebbe simile
2
0
3
e l'output sarebbe simile
2
0
3 X
I caratteri / le righe degli spazi bianchi iniziali / finali sono irrilevanti; se sono invisibili al lettore, va bene. (Detto questo, per il resto degli esempi tornerò a usare "." Per il personaggio di sfondo, per facilitare la lettura.)
Se entrambi i vettori hanno peso 1, il risultato apparirà come un parallelogramma: l'input
.1.
...
1.0
porta all'output
X.1.
....
.1.0
Si noti che questo parallelogramma può essere degenerato se i vettori di input sono collineari: l'input
0.1..1
porta all'output
0.1..1.X
È possibile che il vettore risultante sia uguale a uno dei vettori di input o all'origine; in questo caso, sovrascrive semplicemente il carattere di input. Ad esempio, l'input
..2.0.1...
produce l'output
..X.0.1...
(dove in input e / o output, i periodi iniziali e finali potrebbero essere eliminati). L'input
.....3
......
...0..
......
......
2.....
produce l'output
.....3
......
...X..
......
......
2.....
Finalmente l'input
90
.8
produce l'output
........90
.........8
..........
..........
..........
..........
..........
..........
X.........