Un numéro de colline est un numéro qui a le même chiffre dans le premier et le dernier , mais ce n'est pas tout. Dans un numéro de colline, les premiers chiffres augmentent strictement et les derniers chiffres diminuent strictement. Le plus grand chiffre peut être répété .
Voici un exemple de numéro de colline:
12377731 | 1237... | ...731
^ same ^ | strictly increasing | strictly decreasing
---------+---------------------+---------------------
12377731
^^^ okay because largest digit can be repeated
Ce n'est pas :
4588774 | ...8774
| ^^ not the largest digit
| so this has to be strictly decreasing
| but it's not, so not a hill number
Défi
Étant donné un entier positif, écrivez un programme complet ou une fonction qui renvoie la vérité pour les nombres de collines mais la fausse sur d'autres valeurs.
Remarques:
- L'entrée et la sortie peuvent être dans n'importe quel format raisonnable .
- C'est le code-golf, donc la réponse la plus courte dans chaque langue gagne!
Cas de test
12321 -> Truthy
1233321 -> Truthy
99 -> Truthy
3 -> Truthy
234567992 -> Truthy
1232 -> Falsy
778896 -> Falsy
23232 -> Falsy
45566554 -> Falsy
5645 -> Falsy
code-golf
decision-problem
number-theory
indéfini
la source
la source
222222222
? Est-ce un nombre plat de collines?222222222
est un nombre de collines, le plus grand chiffre est 2 et peut donc être répété1230321
un numéro de colline?Réponses:
Gelée , 8 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
JavaScript (ES6),
6254 octetsPrend l'entrée sous forme de chaîne. Renvoie une valeur booléenne.
Essayez-le en ligne!
Commenté
JavaScript (ES6), 65 octets
Essayez-le en ligne!
Comment?
Exemple:
Ce tableau est contraint à une chaîne, ce qui donne:
Nous appliquons l'expression régulière suivante:
Enfin, nous testons également si le dernier chiffre
p
est égal au premier chiffres[0]
.la source
Pyth, 16 octets
Essayez la suite de tests .
la source
Gelée , 11 octets
Explication:
Essayez-le en ligne!
la source
Perl 6 , 39 octets
Essayez-le en ligne!
Explication
la source
Python 2 ,
114112 octetsEssayez-le en ligne!
la source
R , 65 octets
Prend des cordes. A pris l'idée de vérifier l'invariance de tri de la réponse Pyth.
Essayez-le en ligne!
la source
05AB1E ,
19171312 octets-5 octets en créant un port de @lirtosiast réponse Pyth de .
Essayez-le en ligne ou vérifiez tous les cas de test .
Explication:
Â{RQ
peut également être(Â{Q
pour le même nombre d'octets, où(
annule chaque signe: essayez-le en ligne .la source
J, 23 octets
L'idée volée aux réponses de Jelly. Je voulais juste voir à quel point je pouvais le faire en J.
Essayez-le en ligne!
la source
MATL , 12 octets
Essayez-le en ligne!
Explication
L'entrée est une chaîne de chiffres. La sortie est un
1
ou0
. Le numéro222222
est un numéro de colline selon ce programme. Enregistrement de 2 octets en copiant la méthode de Dennis pour vérifier l'égalité des premier et dernier chiffres.la source
Python 2 , 53 octets
Prend l'entrée sous forme de chaîne. La sortie se fait via la présence ou l'absence d'une exception .
Essayez-le en ligne!
Python 2 , 62 octets
Prend l'entrée sous forme de chaîne et renvoie un booléen.
Essayez-le en ligne!
la source
Langage Mathematica / Wolfram,
6964 octetsFonction pure. Prend l'entrée comme un entier, retourne
True
ouFalse
.Explication:
La première clause vérifie le "relief":
IntegerDigits
: Récupère les chiffres d'un entier. Conserver dansy
.-Differences
: Prenez les différences successives et les flip signs.Sign
: Remplacez chaque entrée par +1 si positif, 0 si zéro et -1 si négatif. Conserver dansx
.Sort
: Trier la liste de +1, 0, -1 du plus petit au plus grand. Comparer à la liste d'origine dansx
.La deuxième clause vérifie si les premier et dernier chiffres sont égaux.
Un coup de chapeau à @IanMiller pour obtenir des conseils sur l'amélioration de ce code.
la source
IntegerDigits
etDifferences
sont plutôt longs noms de fonction est un peu gênant.Sort[x=Sign@-Differences[y=IntegerDigits@#]]==x&&y[[1]]==Last@y&
Japt, 11 octets
Prend l'entrée comme un tableau de chiffres.
Essayez-le ou exécutez tous les cas de test
la source
Retina 0.8.2 , 52 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Convertissez chaque chiffre en unaire deux fois, séparé par
;
s et terminé par,
s. Cependant, vous pouvez alors considérer le résultat comme le premier chiffre, a;
, puis toutes les paires de chiffres adjacents, les chiffres de chaque paire séparés par,
et les paires séparées par;
s, puis un autre;
, puis le dernier chiffre, puis un final,
.Soustrayez les paires de chiffres adjacents. Cela laisse
;,;
des chiffres égaux et1
s du côté supérieur pour des chiffres inégaux. (Cela pourrait être fait dans le cadre de l'expression rationnelle suivante, mais ce ne serait évidemment pas si golfique.)Faites correspondre le premier chiffre, puis n'importe quel nombre de paires de chiffres ascendants, puis n'importe quel nombre de paires de chiffres égaux, puis n'importe quel nombre de paires de chiffres descendants, puis faites correspondre à nouveau le premier chiffre à la toute fin.
la source
Rouge , 181 octets
Essayez-le en ligne!
Plus lisible:
la source
Powershell, 77 octets
Script de test moins golfé:
Production:
la source
C # (Visual C # Interactive Compiler) , 161 octets
Essayez-le en ligne!
Voici un aperçu de comment cela fonctionne ...
string
la source
Python 3 , 114 octets
Essayez-le en ligne!
Bien plus long que certaines solutions Python 2, mais celle-ci est basée sur la définition et j'aime ça.
la source
Rubis , 47 octets
Essayez-le en ligne!
Entrée sous forme de tableau de chiffres, la sortie est booléenne.
la source