Une séquence de n> 0 entiers est appelée un jolly jumper si les valeurs absolues de la différence entre les éléments successifs prennent toutes les valeurs 1 à n-1.
Donc la séquence [4,1,2,4] a des différences absolues [3,1,2] qui est équivalente à l'ensemble [1,2,3] (1 à n-1 où n est la longueur de la séquence originale) c'est donc un jolly jumper.
Les séquences ont une longueur n> 0.
Supposons que n = 1 est un cavalier joyeux.
Mode facile: ne vous inquiétez pas de stdin / stdout. Juste une fonction qui accepte cependant les arguments et renvoie quelque chose qui indique joyeux ou non
Mode difficile: entrée sur stdin (séparés par des espaces), et la sortie est "Jolly" / "Not jolly". La capitalisation est importante.
C'est le golf de code.
EDIT: Les séquences peuvent contenir des entiers négatifs et les entrées sur stdin sont séparées par des espaces.
$ jolly 2 -1 0 2
Jolly
$ jolly 19 22 24 25
Jolly
$ jolly 19 22 24 21
Not jolly
Réponses:
Haskell
Facile 4 caractères
Renvoie une liste d'entiers joyeux si et seulement si une liste d'entiers joyeux est donnée en entrée. C'est légal basé sur "juste une fonction qui accepte des arguments cependant et retourne quelque chose qui indique joyeux ou pas".
Solution alternative facile avec 61 caractères:
Prend une liste et renvoie la liste vide si la séquence est joyeuse.
la source
[1,3]
n'est pas gai, n'est-ce pas? Je suppose que vous devez répéter à lalength n-1
place.Ruby,
9293 caractèresLa version hard avec entrée sur STDIN.
Si vous le démarrez avec
-pa
(compte pour 4), vous pouvez enregistrer 5 caractères:la source
-pa
.Java (difficile)
Suppose que l'entrée est donnée via stdin. (pas via des arguments de ligne de commande comme par exemple)
Golfé - 325
Non-golfé
la source
Scala, mode facile, 123 caractères
Pour exécuter ou tester sur ideone.com:
la source
Golfscript, mode facile,
2118 caractèresAccepte les arguments comme un tableau d'entiers sur la pile, avec rien d'autre sur la pile; laisse 1 sur la pile si c'est gai et 0 sinon. Pour prendre l'entrée sur stdin en tant que liste d'entiers séparés par des espaces, ajoutez
et pour sortir "Jolly" / "Not jolly" (en supposant que nous transformons cela en un programme) postpend
la source
[4 1 2 4]
-à- dire pas4 1 2 4
).J (facile), 18
J (dur), 68
la source
Brachylog , 11 octets (facile)
Essayez-le en ligne!
s₂ᶠ-ᵐ
- Différences consécutivesȧᵐ
- Valeurs absolueso
- Trier~⟦₁
- Le résultat est-il la plage 1 à quelque chose?la source
J, 30
26 enmode facile, 8176en mode difficilemodifier: gérer les listes inférieures à 3, corriger la lecture stdin
La première ligne s'occupe du mode facile, la seconde ajoute le mode difficile.
J lit généralement de droite à gauche:
2-/\
: pour chaque deux nombres successifs de la liste, faites la différence|
: valeur absolue/:~
: trier par ordre croissant>:@i.@#
: 1 à n , pour une liste de n nombres=
: comparer les différences triées avec la séquence (à l'aide d'un "fork" J)*/
: multiplie tous les booléens par élément; si toutes les comparaisons étaient 1, leur produit est 1, donc c'est gaila source
1 3
.Ruby, 97
102106(dur)Peut-être aussi, puisque tout le monde est:
Entrée prise sur stdin.
la source
(1..d.size).to_a
par[*1..d.size]
. La commutation d'opérandes est désormais possible, en enregistre un autre (total -5 caractères).ré
facile (
10383 caractères)renvoie la somme de 1..i.length sur Jolly un autre nombre sinon (un peu de règles qui traînent ici)
difficile (142 caractères)
l'entrée est délimitée par des espaces et se termine sur EOF
la source
Sensationnel
Facile: 78
Difficile: 151
la source
PowerShell, dur,
117126Histoire:
$null
en une variable inexistantela source
Scala
Un coup rapide - il y a probablement des améliorations possibles.
Facile: 77
Difficile: 124
la source
Q, 64 (difficile), 30 (facile)
difficile
facile
la source
J (facile), 19 caractères
Usage:
Varient comme la réponse de DCharness , et je l'aurais juste ajouté en tant que commentaire, mais pour le fait qu'il n'a pas visité depuis le 23 février.
2-/\
prend la différence entre des paires de nombres successifs,|
obtient la valeur absolue de chaque nombre,/:~
trie par ordre croissant,<:
décrémente chaque nombre de 1,(=i.@#)
un crochet J qui génère la séquence de nombres de 0 à la longueur de la liste des différences - 1 (i.@#
) et la compare avec cette liste=
.*/
multiplie la liste des1
s et0
s générée par le verbe précédent.la source
x-:y
au lieu de*/x=y
sauvegarder un personnage.Scala facile: 138
153, 170(était erroné, amélioré plus tard)non golfé:
L'idée est que nous construisons la deuxième dérivation:
Scala dur 172
182, 205(était erroné / amélioré):plus ou moins les mêmes que ci-dessus.
la source
4 1 2 5
renvoie vrai. Pourtant, je n'ai toujours pas réussi à contourner ce pli gauche ...readLine
prend l'entrée de la console, pas du stdin ... (mais vous pouvez utiliser à laargs
place)j("1")
jetteUnsupportedOperationException: empty.max
PHP, facile, 129
Pour un tableau
$s
d'entiers donné:La version non golfée:
la source
Gelée ,
76 octets (facile)Essayez-le en ligne!
Prend l'entrée sous forme de nombres séparés par des virgules dans le premier argument. Renvoie 1 si la séquence est joyeuse et 0 si elle ne l'est pas!
Solution à 7 octets:
Essayez-le en ligne!
Prend l'entrée sous forme de nombres séparés par des virgules dans le premier argument. Ne renvoie rien si la liste est une séquence de cavaliers joyeux et quelque chose si ce n'est pas le cas.
L'ajout de cette ligne le fait fonctionner avec la spécification difficile:
Jelly ,
2722 bytes (hard, feedback welcome!)Essayez-le en ligne!
Solution (dure) de 27 octets:
Essayez-le en ligne!
Prend des nombres séparés par des espaces
stdin
et affiche "Jolly" ou "Not jolly".Explication:
Tout commentaire très apprécié!
la source
LR
estJ
. Si vous écrivez quelque chose commeIAṢ⁼J$
vous obtenez un joli résultat 1/0, et vous pouvez l'utiliser pour indexer“Not jolly“Jolly”
:ɠḲVIAṢ⁼J$ị“¢⁼D“¡KṀȥƘạ»
⁼
atome, pratique pour comparer seulement des parties de listes.Haskell ,
5957 octetsMode facile, renvoie la gaieté comme un booléen. Merci à @Laikoni pour deux octets.
Essayez-le en ligne!
la source
Japt ,
3230 octets Hard-2 octets de @Shaggy
Essayez-le en ligne!
la source
Python 3, 117 (dur)
Essayez-le en ligne!
la source
JavaScript: 105 (mode facile)
Golfé:
Non golfé:
la source
Perl, 89 (dur)
86 caractères de code + 3 pour courir avec l'
-p
optionla source
Javascript (dur): 138
la source
la source
R, facile, 110
Usage:
la source
Python, 72 (facile), 114 (difficile)
Facile:
Difficile :
la source
Python, 255 caractères
la source
C, 119 (difficile), 97 (facile)
La solution facile lit l'entrée des arguments et retourne un 0 comme code de sortie si l'entrée est une séquence de cavaliers joyeux:
la source
APL (
504947, dur)Facile (24):
La fonction prend un tableau et retourne 0 ou 1.
la source