Introdução:
Vamos dar uma olhada em uma calculadora padrão no Windows:
para esse desafio, veremos apenas os seguintes botões e ignoraremos todo o resto:

7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Desafio:
Entrada:
você receberá duas entradas:
- Um é algo para indicar a rotação em incrementos de 90 graus
- A outra é uma lista de coordenadas que representam os botões pressionados na calculadora girada.
Com base na primeira entrada, giramos o layout mencionado acima no sentido horário em incrementos de 90 graus. Portanto, se a entrada é 0 degrees, permanece como é; mas se a entrada for 270 degrees, ela será girada três vezes no sentido horário (ou uma vez no sentido anti-horário). Aqui estão os quatro layouts possíveis:
Default / 0 degrees:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
90 degrees clockwise:
0 1 4 7
0 2 5 8
. 3 6 9
+ - * /
180 degrees:
+ . 0 0
- 3 2 1
* 6 5 4
/ 9 8 7
270 degrees clockwise / 90 degrees counterclockwise:
/ * - +
9 6 3 .
8 5 2 0
7 4 1 0
A segunda entrada é uma lista de coordenadas em qualquer formato razoável † . Por exemplo (matriz de números inteiros 2D com 0 índices):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Saída:
Nós produzimos tanto a soma quanto o resultado (e um sinal de igual =).
Exemplo:
Portanto, se a entrada for 270 degreese [[1,2],[2,3],[0,3],[1,0],[1,1]], a saída se tornará:
517*6=3102
Regras do desafio:
- † As entradas podem estar em qualquer formato razoável. A primeira entrada pode ser
0-3,1-4,A-D,0,90,180,270, etc. A segunda entrada pode ser uma matriz 2D 0-indexados, array 1-indexados 2D, uma String, lista de Point-objetos, etc. Sua chamada. É até possível trocar as coordenadas x e y em comparação com as entradas de exemplo fornecidas. Indique quais formatos de entrada você usou em sua resposta! - Você tem permissão para adicionar espaços (ou seja
517 * 6 = 3102), se desejar. - Você tem permissão para adicionar zeros à direita após a vírgula, até um máximo de três (ou seja,
3102.0/3102.00/ em3102.000vez de3102ou em0.430vez de0.43). - Você não tem permissão para adicionar parênteses na saída, portanto,
(((0.6+4)-0)/2)/4=0.575não é uma saída válida. - Você tem permissão para usar outros símbolos de operando no seu idioma. Então
×ou em·vez de*; ou em÷vez de/; etc. - Como uma calculadora calcula automaticamente ao inserir um operando, você deve ignorar a precedência do operador! Portanto
10+5*3, resultará em45((10+5)*3=45), não25(10+(5*3)=25)
(ou seja,10→+→5→*(agora exibe 15 no visor) →3→=(agora exibe a resposta45)). Lembre-se disso ao usarevalfunções semelhantes na soma resultante. - Não haverá casos de teste para divisão por 0.
- Não haverá casos de teste com mais de três dígitos decimais como resultado, portanto, não há necessidade de arredondar o resultado.
- Não haverá casos de teste em que vários operandos se sigam ou em que dois pontos se sigam.
- Não haverá casos de teste para números negativos. O sinal de menos (
-) será usado apenas como operando, não como negativo. - Não haverá casos de teste
.##sem um número inicial antes da vírgula (ou seja2+.7, não será um caso de teste válido, mas2+0.7poderia ser).
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados, programas completos. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
Input: 270 degrees & [[1,2],[2,3],[0,3],[1,0],[1,1]]
Output: 517*6=3102
Input: 90 degrees & [[3,1],[0,0],[0,1],[3,3],[2,0],[0,3],[0,0],[0,2],[3,0],[2,1]]
Output: 800/4+0.75=200.75
Input: 0 degrees & [[0,0],[1,0],[2,0],[3,0],[1,2],[2,1],[2,2]]
Output: 789/263=3
Input: 180 degrees & [[3,0],[1,0],[1,2],[0,0],[3,2],[0,1],[2,0],[0,3],[2,1],[0,3],[3,2]]
Output: 0.6+4-0/2/4=0.575
1+-*/+-*/2vontade dá 0.5na calculadora Windows (10).
[1,3],
2+.7?