Introducción:
Echemos un vistazo a una calculadora estándar en Windows:
para este desafío, solo veremos los siguientes botones e ignoraremos todo lo demás:
7 8 9 /
4 5 6 *
1 2 3 -
0 0 . +
Desafío:
Entrada:
Recibirá dos entradas:
- Uno es algo para indicar la rotación en incrementos de 90 grados
- La otra es una lista de coordenadas que representan los botones presionados en la calculadora girada.
Según la primera entrada, giramos el diseño mencionado anteriormente en el sentido de las agujas del reloj en incrementos de 90 grados. Entonces, si la entrada es 0 degrees
, permanece como está; pero si la entrada es 270 degrees
, se rotará tres veces en sentido horario (o una vez en sentido antihorario). Aquí están los cuatro diseños posibles:
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
La segunda entrada es una lista de coordenadas en cualquier formato razonable † . Por ejemplo (0-index 2D integer-array):
[[1,2],[2,3],[0,3],[1,0],[1,1]]
Salida:
sacamos tanto la suma como el resultado (y un signo igual =
).
Ejemplo:
Entonces, si la entrada es 270 degrees
y [[1,2],[2,3],[0,3],[1,0],[1,1]]
, la salida se convertirá en:
517*6=3102
Reglas de desafío:
- † Las entradas pueden estar en cualquier formato razonable. La primera entrada puede ser
0-3
,1-4
,A-D
,0,90,180,270
, etc. La segunda entrada puede ser una matriz de 0 indexados 2D, array 1 indexadas-2D, una cadena, lista de Point-objetos, etc. Su llamada. Incluso es posible intercambiar las coordenadas x e y en comparación con las entradas de ejemplo proporcionadas. ¡Indique qué formatos de entrada ha utilizado en su respuesta! - Se le permite agregar espacios (es decir
517 * 6 = 3102
) si lo desea. - Se le permite agregar ceros finales después de la coma, hasta un máximo de tres (es decir,
3102.0
/3102.00
/ en3102.000
lugar de3102
o en0.430
lugar de0.43
). - No está permitido agregar paréntesis en la salida, por
(((0.6+4)-0)/2)/4=0.575
lo que no es una salida válida. - Puede utilizar otros símbolos de operando para su idioma. Entonces
×
o en·
lugar de*
; o en÷
lugar de/
; etc. - Dado que una calculadora calcula automáticamente al ingresar un operando, ¡debe ignorar la precedencia del operador! Entonces
10+5*3
dará como resultado45
((10+5)*3=45
), no25
(10+(5*3)=25
)
(es decir,10
→+
→5
→*
(ahora muestra 15 en la pantalla) →3
→=
(ahora muestra la respuesta45
)). Tenga esto en cuenta cuando useeval
funciones similares en la suma resultante. - No habrá casos de prueba para la división por 0.
- No habrá casos de prueba con más de tres dígitos decimales como resultado, por lo que no es necesario redondear el resultado.
- No habrá ningún caso de prueba en el que varios operandos se sigan, o donde dos puntos se sigan.
- No habrá casos de prueba para números negativos. El signo menos (
-
) solo se usará como operando, no como negativo. - No habrá ningún caso de prueba
.##
sin un número inicial antes de la coma (es decir2+.7
, no será un caso de prueba válido, pero2+0.7
podría serlo).
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados, programas completos. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
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
will da 0.5
en la calculadora de Windows (10).
[1,3],
2+.7
?