Resumen Ejecutivo
Dada una entrada que representa dos vectores y sus respectivos "pesos", produce una salida que también representa la suma ponderada de esos vectores.
Desafío
La entrada consistirá en una o más líneas de los siguientes caracteres:
- exactamente una aparición del dígito 0, que representa el origen en un plano bidimensional;
- exactamente otros dos dígitos (1-9; pueden o no ser el mismo dígito), cuyas posiciones relativas al origen representan vectores, y cuyos valores representan los pesos unidos a estos vectores;
- cierto número de "personajes de fondo". El solucionador puede elegir un carácter de fondo específico; por ejemplo, elegiré "." (principalmente para la legibilidad humana). Alternativamente, los caracteres de fondo pueden ser cualquier cosa que parezca un espacio en blanco.
(El solucionador puede elegir si la entrada es una sola cadena de varias líneas o una matriz de cadenas de una línea).
Por ejemplo, la entrada
....2
.0...
...3.
representa un vector en coordenadas (3,1) con peso 2, y un vector en coordenadas (2, -1) con peso 3.
La salida debería ser casi la misma que la entrada, con los siguientes cambios:
- un "carácter de resultado", elegido por el solucionador, que se agregará en la posición especificada por la suma ponderada de los vectores de entrada (de manera equivalente, en la posición que es la combinación lineal apropiada de los vectores de entrada);
- tantos caracteres de fondo como sean necesarios para ajustar el origen, los dos vectores de entrada y el vector de salida en la misma imagen. Se pueden incluir caracteres de fondo adicionales si se desea; La única restricción es que, si el carácter de fondo es un carácter visible, toda la salida debe ser de forma rectangular y cada carácter que no represente un vector debe ser el carácter de fondo. (Si se utiliza el espacio en blanco como caracteres de fondo, entonces no es necesario aplicar estas restricciones).
(En general, si tenemos un vector (v, w) con peso a y un segundo vector (x, y) con peso b, su suma ponderada es a (v, w) + b (x, y) = (av + bx, aw + por).)
En el ejemplo anterior, la combinación lineal apropiada es 2 * (3,1) + 3 * (2, -1) = (12, -1). Si usamos "X" como el carácter de resultado, entonces la salida podría verse como
....2.........
.0............
...3.........X
o
................
...2............
0...............
..3.........X...
................
................
Puntuación de código de golf habitual : la respuesta más corta, en bytes, gana.
Ejemplo de entrada y salida
Si se utiliza un espacio en blanco, la entrada anterior se vería como
2
0
3
y la salida se vería así
2
0
3 X
Los caracteres / líneas de espacios en blanco iniciales / finales son irrelevantes; si son invisibles para el lector, está bien. (Dicho esto, para el resto de los ejemplos volveré a usar "." Para el carácter de fondo, para que sea más fácil de leer).
Si ambos vectores tienen peso 1, entonces el resultado se verá como un paralelogramo: la entrada
.1.
...
1.0
conduce a la salida
X.1.
....
.1.0
Tenga en cuenta que este paralelogramo puede degenerarse si los vectores de entrada son colineales: la entrada
0.1..1
conduce a la salida
0.1..1.X
Es posible que el vector resultante sea igual a uno de los vectores de entrada o al origen; en este caso, simplemente sobrescribe el carácter de entrada. Por ejemplo, la entrada
..2.0.1...
produce la salida
..X.0.1...
(donde en entrada y / o salida, los períodos iniciales y finales podrían eliminarse). La entrada
.....3
......
...0..
......
......
2.....
produce la salida
.....3
......
...X..
......
......
2.....
Finalmente la entrada
90
.8
produce la salida
........90
.........8
..........
..........
..........
..........
..........
..........
X.........