Trouver un trésor caché par des pirates est vraiment facile. Tout ce dont vous avez besoin est une carte. Il est bien connu que les pirates dessinent des cartes à la main et décrivent l'algorithme pour trouver un endroit de la manière suivante: "Tenez-vous près d'un palmier solitaire, faites 30 pas vers la forêt, 15 vers le lac, ..."
Un voyage à travers un tel itinéraire est généralement une excellente occasion de voir le paysage ... Cependant, de nos jours, personne n'a le temps pour cela. C'est pourquoi les chercheurs de trésors vous ont demandé d'écrire un programme qui déterminerait l'emplacement exact d'un trésor en utilisant une carte donnée.
Contribution
L'entrée se compose de plusieurs instructions <Direction> <Distance>
, séparées par des virgules (qui sont suivies d'un espace chacun).
La direction est l'une des suivantes:
N
- Nord, S
- Sud, E
- Est, W
- Ouest,
NE
- Nord-est, NW
- Nord-ouest, SE
- Sud-est, SW
- Sud-ouest.
La distance est un entier (1 à 1000).
Production
Le résultat est les coordonnées où vous vous retrouvez après avoir terminé les instructions, avec trois décimales, séparées par une virgule et un espace. L'emplacement de départ a zéro coordonnées (0, 0).
La première coordonnée est X (Est signifie des coordonnées supérieures à zéro, Ouest signifie moins de zéro).
La deuxième coordonnée est Y (Nord signifie plus de zéro, Sud signifie moins de zéro).
Exemples
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
Source (en ukrainien). Le format d'entrée y est différent.
-3.000, 2.000
.(print (word (form xcor 4 3) ",) (form ycor 4 3))
. Mais je ne suis pas sûr de la facilité d'analyse de l'entrée.Réponses:
Ruby 1,9,
175171162153130120117la source
?i.to_c
peut être raccourci à1.i
-4 octets.Haskell (291)
la source
C99 (319 caractères)
entrée
stdin
, test exécuté sur ideone :)la source
Python,
158154150 150 caractèresla source
D=dict(N=1j,E=1,S=-1j,W=-1)
[153] Ligne 2: est-ellej
vraiment nécessaire? [152] Lignes 3-4: Si vous passez à Python 3,raw_input
→input
, et même si vous devez utiliser des parenthèses aprèsprint
, vous enregistrez 2 caractères [150].real
et.imag
pour fonctionner.imag
andreal
attrs ...JavaScript,
179164170168158156153 caractères(E|W)
en regex par(.)
d
n
au lieu d'une nouvelle variabled
153: Personnellement, je pense que cette édition le rend dix fois plus laid, mais c'est trois caractères plus court. Il est basé sur le comportement non standard que vous pouvez appeler des objets RegExp en tant que fonctions:
/./g('string')
est le même 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))
la source
Haskell, 199 caractères
la source
Scala (
367, 332)la source
Java
(459) (445) (402) (382) (363)(352)entrée stdin
la source
PowerShell, 178
Cela peut probablement perdre jusqu'à 10 caractères en réduisant la précision de √2 / 2.
la source
C (gcc) ,
155152 octets-3 octets grâce au plafond
Essayez-le en ligne!
la source
Groovy (215)
lit l'entrée comme arguments de programme. Exemple:
la source
Perl 5
-n
, 122 octetsEssayez-le en ligne!
la source
J , 93 octets
Essayez-le en ligne!
la source