Sumário executivo
Dada a entrada que representa dois vetores e seus respectivos "pesos", produza saída que também represente a soma ponderada desses vetores.
Desafio
A entrada consistirá em uma ou mais linhas dos seguintes caracteres:
- exatamente uma ocorrência do dígito 0, que representa a origem em um plano bidimensional;
- exatamente dois outros dígitos (1-9; podem ou não ser o mesmo dígito), cujas posições em relação à origem representam vetores e cujos valores representam os pesos associados a esses vetores;
- algum número de "caracteres de fundo". O solucionador pode escolher um caractere de plano de fundo específico; por exemplo, vou escolher "." (principalmente para legibilidade humana). Como alternativa, os caracteres de segundo plano podem ser qualquer coisa que pareça com espaço em branco.
(O solucionador pode escolher se a entrada é uma única sequência de múltiplas linhas ou uma matriz de seqüências de uma linha.)
Por exemplo, a entrada
....2
.0...
...3.
representa um vetor nas coordenadas (3,1) com peso 2 e um vetor nas coordenadas (2, -1) com peso 3.
A saída deve ser quase a mesma que a entrada, com as seguintes alterações:
- um "caractere de resultado", escolhido pelo solucionador, a ser adicionado na posição especificada pela soma ponderada dos vetores de entrada (equivalentemente, na posição que é a combinação linear apropriada dos vetores de entrada);
- quantos caracteres de plano de fundo forem necessários para ajustar a origem, os dois vetores de entrada e o vetor de saída na mesma imagem. Caracteres extras de fundo podem ser incluídos, se desejado; a única restrição é que, se o caractere de segundo plano for um caractere visível, toda a saída deverá ter uma forma retangular e todo caractere que não represente um vetor deverá ser o caractere de segundo plano. (Se o espaço em branco for usado como caracteres de segundo plano, essas restrições não precisarão ser impostas.)
(Em geral, se tivermos um vetor (v, w) com peso a e o segundo vetor (x, y) com peso b, sua soma ponderada é a (v, w) + b (x, y) = (av + bx, aw + por).)
No exemplo anterior, a combinação linear apropriada é 2 * (3,1) + 3 * (2, -1) = (12, -1). Se usarmos "X" como o caractere de resultado, a saída poderá parecer
....2.........
.0............
...3.........X
ou
................
...2............
0...............
..3.........X...
................
................
Pontuação usual de código-golfe : a resposta mais curta, em bytes, vence.
Exemplo de entrada e saída
Se espaço em branco for usado, a entrada acima seria semelhante
2
0
3
e a saída pareceria
2
0
3 X
Caracteres / linhas em branco à esquerda / à esquerda são irrelevantes; se eles são invisíveis para o leitor, tudo bem. (Dito isto, no restante dos exemplos, voltarei a usar "." Para o caractere de segundo plano, para facilitar a leitura.)
Se ambos os vetores tiverem peso 1, o resultado será semelhante a um paralelogramo: a entrada
.1.
...
1.0
leva à saída
X.1.
....
.1.0
Observe que esse paralelogramo pode ser degenerado se os vetores de entrada forem colineares: a entrada
0.1..1
leva à saída
0.1..1.X
É possível que o vetor de resultado seja igual a um dos vetores de entrada ou à origem; neste caso, simplesmente substitui o caractere de entrada. Por exemplo, a entrada
..2.0.1...
produz a saída
..X.0.1...
(onde na entrada e / ou saída, os períodos inicial e final podem ser excluídos). A entrada
.....3
......
...0..
......
......
2.....
produz a saída
.....3
......
...X..
......
......
2.....
Finalmente, a entrada
90
.8
produz a saída
........90
.........8
..........
..........
..........
..........
..........
..........
X.........