Résumé
Étant donné une entrée représentant deux vecteurs et leurs «poids» respectifs, produire une sortie qui représente également la somme pondérée de ces vecteurs.
Défi
L'entrée consistera en une ou plusieurs lignes des caractères suivants:
- exactement une occurrence du chiffre 0, qui représente l'origine dans un plan bidimensionnel;
- exactement deux autres chiffres (1-9; peuvent ou non être le même chiffre), dont les positions par rapport à l'origine représentent des vecteurs, et dont les valeurs représentent les poids attachés à ces vecteurs;
- un certain nombre de "caractères d'arrière-plan". Le solveur peut choisir un caractère d'arrière-plan spécifique; par exemple, je choisirai "." (principalement pour la lisibilité humaine). Alternativement, les caractères d'arrière-plan peuvent être tout ce qui ressemble à un espace vide.
(Le solveur peut choisir si l'entrée est une seule chaîne à plusieurs lignes ou un tableau de chaînes à une seule ligne.)
Par exemple, l'entrée
....2
.0...
...3.
représente un vecteur aux coordonnées (3,1) de poids 2, et un vecteur aux coordonnées (2, -1) de poids 3.
La sortie doit être presque la même que l'entrée, avec les modifications suivantes:
- un "caractère de résultat", choisi par le solveur, à ajouter à la position spécifiée par la somme pondérée des vecteurs d'entrée (de manière équivalente, à la position qui est la combinaison linéaire appropriée des vecteurs d'entrée);
- autant de caractères d'arrière-plan que nécessaire pour adapter l'origine, les deux vecteurs d'entrée et le vecteur de sortie dans la même image. Des caractères d'arrière-plan supplémentaires peuvent être inclus si vous le souhaitez; la seule contrainte est que, si le caractère d'arrière-plan est un caractère visible, la sortie entière doit être de forme rectangulaire et chaque caractère ne représentant pas un vecteur doit être le caractère d'arrière-plan. (Si un espace vide est utilisé comme caractères d'arrière-plan, ces contraintes n'ont pas besoin d'être appliquées.)
(En général, si nous avons un vecteur (v, w) avec le poids a et un deuxième vecteur (x, y) avec le poids b, leur somme pondérée est a (v, w) + b (x, y) = (av + bx, aw + par).)
Dans l'exemple précédent, la combinaison linéaire appropriée est 2 * (3,1) + 3 * (2, -1) = (12, -1). Si nous utilisons "X" comme caractère de résultat, la sortie pourrait ressembler à
....2.........
.0............
...3.........X
ou
................
...2............
0...............
..3.........X...
................
................
Score de code-golf habituel : la réponse la plus courte, en octets, l'emporte.
Exemple d'entrée et de sortie
Si un espace vide est utilisé, l'entrée ci-dessus ressemblerait à
2
0
3
et la sortie ressemblerait
2
0
3 X
Les caractères / lignes d'espacement avant / arrière ne sont pas pertinents; s'ils sont invisibles pour le lecteur, ça va. (Cela étant dit, pour le reste des exemples, je vais recommencer à utiliser "." Pour le caractère d'arrière-plan, pour le rendre plus facile à lire.)
Si les deux vecteurs ont le poids 1, alors le résultat ressemblera à un parallélogramme: l'entrée
.1.
...
1.0
conduit à la sortie
X.1.
....
.1.0
Notez que ce parallélogramme peut être dégénéré si les vecteurs d'entrée sont colinéaires: l'entrée
0.1..1
conduit à la sortie
0.1..1.X
Il est possible que le vecteur résultat soit égal à l'un des vecteurs d'entrée ou à l'origine; dans ce cas, il remplace simplement le caractère saisi. Par exemple, l'entrée
..2.0.1...
donne la sortie
..X.0.1...
(où en entrée et / ou en sortie, les périodes de début et de fin pourraient être supprimées). L'entrée
.....3
......
...0..
......
......
2.....
donne la sortie
.....3
......
...X..
......
......
2.....
Enfin, l'entrée
90
.8
donne la sortie
........90
.........8
..........
..........
..........
..........
..........
..........
X.........