Encontrar un tesoro escondido por piratas es realmente fácil. Todo lo que necesitas para esto es un mapa. Es ampliamente conocido que los piratas dibujan mapas a mano y describen el algoritmo para encontrar un lugar de la siguiente manera: "Párate cerca de una palmera solitaria, haz 30 pasos hacia el bosque, 15 hacia el lago, ..."
Un viaje a través de esa ruta suele ser una gran oportunidad para ver el paisaje ... Sin embargo, hoy en día nadie tiene tiempo para eso. Es por eso que los buscadores de tesoros te han pedido que escribas un programa que determine la ubicación exacta de un tesoro usando un mapa dado.
Entrada
La entrada consta de varias instrucciones <Direction> <Distance>
, separadas por comas (seguidas de un espacio en blanco cada una).
La dirección es una de las siguientes:
N
- Norte, S
- Sur, E
- Este, W
- Oeste,
NE
- Noreste, NW
- Noroeste, SE
- Sureste, SW
- Suroeste.
La distancia es un número entero (1 a 1000).
Salida
El resultado son las coordenadas donde terminas después de terminar las instrucciones, con tres decimales, separadas por una coma y un espacio en blanco. La ubicación de inicio tiene coordenadas cero (0, 0).
La primera coordenada es X (Este significa coordenadas mayores que cero, Oeste significa menos que cero).
La segunda coordenada es Y (Norte significa más que cero, Sur significa menos que cero).
Ejemplos
1) N 3, E 1, N 1, E 3, S 2, W 1
3.000, 2.000
2) NW 10
-7.071, 7.071
3) NE 42, NW 42, SE 42, SW 42
0.000, 0.000
Fuente (en ucraniano). El formato de entrada es diferente allí.
-3.000, 2.000
.(print (word (form xcor 4 3) ",) (form ycor 4 3))
. Pero no estoy seguro de lo fácil que sería analizar la entrada.Respuestas:
Ruby 1.9,
175171162153130120117fuente
?i.to_c
se puede acortar a1.i
-4 bytes.Haskell (291)
fuente
C99 (319 caracteres)
entrada
stdin
, prueba ejecutada en ideone :)fuente
Python,
158154150 caracteresfuente
D=dict(N=1j,E=1,S=-1j,W=-1)
[153] Línea 2: ¿esj
realmente necesaria? [152] Líneas 3-4: si cambias a Python 3,raw_input
→input
, y aunque tienes que usar paréntesis despuésprint
, guardas 2 caracteres [150].real
y.imag
para funcionar.imag
yreal
atributos ...JavaScript
179164170168158156153 caracteres(E|W)
en regex con(.)
d
n
lugar de una nueva variabled
153: Personalmente, creo que esta edición lo hace diez veces más feo, pero es tres caracteres más corto. Se basa en el comportamiento no estándar al que puede llamar objetos RegExp como funciones:
/./g('string')
es lo mismo que/./g.exec('string')
:for(p=prompt(X=Y=0),R=/(N|S)?(.)? (\d+)/g;[,y,x,n]=R(p)||0;X+=x?x<'W'?n:-n:0)n/=x&&y?Math.SQRT2:1,Y+=y?y<'S'?n:-n:0;alert(X.toFixed(3)+', '+Y.toFixed(3))
fuente
Haskell, 199 caracteres
fuente
Scala (
367, 332)fuente
Java
(459) (445) (402) (382) (363)(352)entrada estándar
fuente
PowerShell, 178
Esto probablemente puede perder hasta 10 caracteres al reducir la precisión de √2 / 2.
fuente
C (gcc) ,
155152 bytes-3 bytes gracias a ceilingcat
Pruébalo en línea!
fuente
Maravilloso (215)
lee la entrada como argumentos del programa. Ejemplo:
fuente
Perl 5
-n
, 122 bytesPruébalo en línea!
fuente
J , 93 bytes
Pruébalo en línea!
fuente