L'histoire inutile et alambiquée
Je me promène dans Manhattan, bloc par bloc et mes pieds sont fatigués et veulent rentrer chez eux.
La circulation est assez mauvaise, mais heureusement je suis très riche et j'ai un hélicoptère en attente à l'hôtel. Mais j'ai besoin qu'ils sachent la quantité de carburant à emporter pour le vol et pour cela ils ont besoin de connaître ma distance directe de l'hôtel. Je me suis souvenu des blocs sur lesquels j'ai marché et je peux leur dire quel chemin j'ai emprunté. Cette distance doit être précise cependant, si elles sont trop courtes, nous ne reviendrons pas trop longtemps et j'ai acheté du carburant que je ne peux pas utiliser.
Pouvez-vous m'écrire un programme pour convertir cela en la distance qu'ils devront parcourir sur leur vol pour me chercher?
Spécification:
Écrivez-moi une fonction qui:
- Accepte une liste ou une chaîne de blocs parcourus par rapport à une grille arbitraire:
- U p, D own, L eft et R ight.
- Peut être en majuscule ou en minuscule - par exemple. si son plus court à utiliser
u
au lieu d'U
aller de l'avant. - Une direction invalide a un comportement indéfini - par exemple. une direction de X peut provoquer une panne.
- Renvoie un flottant / décimal / double qui est deux fois la distance en ligne droite du point d'origine.
Pour illustration et clarification:
Mon voyage aurait pu tout aussi bien être enregistré que "luluu..."
ou ['l','u','l'...]
mais il doit être enregistré en Haut, Bas, Gauche, Droite.
Réponses:
J, 17 caractères
Utilise le fait que les pouvoirs de
j
représentent les directions appropriées.'urdl'i.
prendre une chaîne et calculer des indices (0 pour 'u', 1 pour 'r', ...)0j1^
se transforme dans la direction du plan complexe en utilisant la puissance correspondante dej
.+/
résume les étapes simples2*|
deux fois le moduleExemple:
la source
Python 2,7
5658565148Avec le numéro un volé de Scrooge McDuck , j'ai fait fortune et j'ai maintenant plus de richesse que Scrooge.
Python 2.7 -
615350 (insensible à la casse)la mise en oeuvre
la source
IndexError: list index out of range
. Quelle forme doit avoir l'entrée?%5
ne l' était pas%8
. Ok, ça a plus de sens maintenant :)APL (29)
par exemple
Explication:
+/'URDL'∘.=⍵
: voir la fréquence à laquelle les caractèresURDL
apparaissent dans l'argument-⌿2 2⍴
: soustraire laU
valeur de laD
valeur et laR
valeur de laL
valeur2 0j2×
: multipliez la valeur verticale par2
et la valeur horizontale par2i
+/
: somme|
: ordre de grandeurla source
Rubis 1.9+ (67)
Exemple
la source
perl6: 44 caractères
get.comb
obtient une ligne d'entrée et se divise en caractères<U R L D>
est une liste de mots, de caractères dans ce cas(1,2,3) Z (4,5,6)
==(1,2), (2,5), (3,6)
, donc il zippe 2 listes l'une dans l'autre, créant une liste de parcelles qui%()
se transforme en hachage<<**>>
fait par paire**
, étendant la liste plus courte pour s'adapter à la plus longue. Il se trouve que la liste plus courtei
[+]
additionne tous les éléments d'une liste,abs
prend le module pour les nombres complexesOui, j'ai supprimé tous les espaces possibles.
la source
Python 2.7 - 65
Agréable et court, il utilise des nombres complexes pour traverser l'avion:
Accessoires à DSM et Abhijit dans d'autres questions qui m'ont montré l'utilisation de
1j
pour calculer cela.la source
1j
être écrit commej
,-1j
comme-j
? De plus, cela gère-t-il les entrées supérieure et inférieure, ou uniquement supérieure?j
et l'unité imaginairej
2
au lieu de multiplier le résultat final.Mathematica
9249Calle mérite tout le crédit pour la rationalisation du code.
Exemple
la source
f@l_ := 2 N@Norm[Tr[l /. {"r" -> 1, "l" -> -1, "u" -> I, "d" -> -I}]]
suffira.2 Norm[(2. + 2. I) + "U" + "X"]
comme sortie pour votre code.@
s, vous obtenez deux autres caractères de moins.PHP, 67
Exemple:
la source
Julia, 45 ans
A volé l'
i
astuce des pouvoirs. Tous les caractères sauf d ont également des valeurs qui fonctionnent comme des pouvoirs acceptables pouri
.la source
J, 29 caractères
Fonctionne uniquement avec les directions minuscules et des caractères autres que
r
,u
,l
et led
fera de donner une mauvaise réponse.Usage:
Explication:
'ruld'i.'uuuudrrrl'
La forme dyadique dei.
trouve l'index des éléments de l'argument de droite dans l'argument de gauche. Dans ce cas:/:~
trie cette liste par ordre croissant:#/.~
compte le nombre d'occurrences de chaque nombre:_2[\
le coupe en 2 rangées:-/
soustrait le bas du haut+&.*:
emprunte une astuce à une autre réponse J que j'ai vue ce matin , et évalue les éléments, puis les additionne, puis effectue une racine carrée. Voir sous&.
documentation:+:
double le résultat:la source
R,
867456 caractèresOk, c'est en fait beaucoup plus court avec des nombres imaginaires:
Usage:
Ancienne solution à 74 caractères avec xy coords:
Usage:
Prend l'entrée en tant que stdin, doit être en minuscules et séparé par des espaces. Utilisez les coordonnées xy à partir de (0,0).
la source
k (
5049)Exemple
la source
Java, 185,
203,204,217,226J'ai supposé que chaque "U" était "1 en haut", donc deux unités en haut seraient "UU"
Modifier: commutateur échangé pour ifs
Déplacé pour l'itérateur
Ne prend plus l'entrée comme chaîne, mais plutôt un tableau de directions
la source
T-SQL, 158
Le @s est la chaîne d'entrée de type varchar (max)
la source
ES6,
7769Définition:
Usage:
(Inspiré en partie par la réponse de Boann.)
la source
for
déclaration par un expression (un corps de fonction flèche contenant des instructions nécessite les crochets et le retour explicite, les corps qui ne sont que des expressions ne le font pas) ..JavaScript - 142 caractères - pas d'évaluation ()
où a est une chaîne comme 'uudrrl'
utiliser comme ça -
Testez dans la console du navigateur.
la source
C # - 90 caractères
Frais de LINQPad.
Où entrée est une chaîne valide.
la source
Befunge-93 (65)
Il a 65 caractères non blancs (217 avec des blancs, bien que cela puisse être réduit par une disposition plus compacte (pour 69/176 caractères)). Il faut une certaine libéralité avec le format de sortie, mais est indéniablement précis. Ne semble pas valoir la peine d'implémenter / voler une implémentation de racine carrée.
echo 'UUDLLUU' | ./befungee.py ../man
sorties 2√13 (en fait, l'implémentation semble avoir un problème avec l'ASCII étendu).la source
Matlab, 51 caractères
Ma soumission Matlab ne fonctionne qu'avec des lettres capitales. C'était amusant! La partie la plus difficile a été de convertir la chaîne en un tableau de nombres complexes à additionner.
Une fonction:
Usage:
la source
Javascript, 136
la source
JavaScript, 89
Exemple:
la source
C, 120
d("LULUURRRRURD")
->8.485281
la source
JavaScript (pas ES6, pas d'évaluation) - 131
Tester:
la source