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 degrees
e [[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.000
vez de3102
ou em0.430
vez de0.43
). - Você não tem permissão para adicionar parênteses na saída, portanto,
(((0.6+4)-0)/2)/4=0.575
nã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 usareval
funçõ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.7
poderia 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+-*/+-*/2
vontade dá 0.5
na calculadora Windows (10).
[1,3],
2+.7
?