Défi :
Vérifiez si le nombre donné forme number staircase
ou non
Contribution :
Un entier (supérieur à 0 et non décimal). REMARQUE: vous pouvez prendre l'entrée sous forme de chaîne, tableau de chiffres.
Production :
une valeur véridique / fausse selon que le nombre forme ou non un escalier
Numéro escalier:
Un escalier numérique est un entier qui, lu de gauche à droite:
- Commence par 1
- qui peut être suivi de 2
- qui peut être suivi de 3
- et ainsi de suite jusqu'à
n
- alors le nombre descend à partir de n - 1
- alors n - 2
- alors n - 3
- et ainsi de suite jusqu'à ce qu'il atteigne 1
Remarque :
La partie peut être utilisée pour indiquer que si la longueur> est supérieure à 1. Si c'est le cas, l'ordre doit être suivi tel quel. soit: 12321
Exemple :
12321 ---> true
12345654321 ---> true
9 ---> false
1 ---> true
2 ---> false
123421 ---> false
112312318901323 ---> false
123456789101110987654321 ---> true
Remarque :
L'entrée donnée sera toujours un entier supérieur à 0 et ne sera pas une décimale. Votre sortie doit être une truthy or falsy
valeur en fonction de l'entrée
Restrictions:
C'est le code-golf donc le code le plus court en octets (pour chaque langage de programmation) gagne.
code-golf
math
number
decision-problem
Muhammad Salman
la source
la source
[1,2,3,4,5,6,7,8,9,1,0,1,1,1,0,9,8,7,6,5,4,3,2,1]
pour123456789101110987654321
?Réponses:
R , 97 octets
Essayez-le en ligne!
Prend
n
comme uncharacter
ou uninteger
; l'utilisationcharacter
donnera des résultats corrects pour les entiers qui ne peuvent pas être conservés avec précision en 64 bitsdouble
.Génère des numéros d'escalier jusqu'à ce qu'il en trouve un au moins aussi long
n
, puis teste l'égalité.Équivalent à:
la source
function(n)
par ne serait-il pasn=scan();
plus court? (pour les entiers bien sûr)Gelée , 5 octets
Essayez-le en ligne!
Attention: très lent (rapide pour
1
et121
)! Préparez-vousDL
à le rendre plus rapide.la source
JavaScript (ES6),
6257 octetsSauvegardé 2 octets grâce à @ l4m2
Renvoie un booléen.
Essayez-le en ligne!
Comment?
En commençant par k = 1 , nous recherchons k au début et à la fin de la chaîne, et itérons récursivement le processus sur la sous-chaîne médiane restante avec k + 1 . La récursivité s'arrête dès qu'il n'y a plus de correspondance. L'entrée est un numéro d'escalier si la dernière sous-chaîne est égale à k .
Exemple pour s = "1234321":
la source
m[0]==s&
place lui ferait passer tous les cas de test (mais échouerait dans d'autres tels que"123217"
).f=(s,k=1)=>(m=s.match(`^${k}(.*)${k}$`))?f(m[1],k+1):s==k
?Haskell ,
5554 octets-1 octet merci à Laikoni !
Essayez-le en ligne!
la source
Pyth,
1312 octetsUn octet enregistré grâce à RK.
Essayez-le ici
Explication
Si vous voulez vraiment que l'entrée soit un entier, vous pouvez l'utiliser à la
}Qmsjk+Sd_Std
place, mais c'est horriblement lent.la source
/
au lieu de}Q
donc il seQ
termine automatiquement à la finPython 2 , 69 octets
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) ,
138107102 octetsEssayez-le en ligne!
Explication:
la source
Zip...Skip
méthode de mon commentaire précédent échoue[1,1]
, ce qui devrait revenirtrue
si je comprends les spécifications. Je l'ai supprimé.05AB1E ,
98 octetsAvertissement: EXTRÊMEMENT LENT! Ajouter
g
au début pour l'accélérer.Essayez-le en ligne!
Explication:
Ancienne explication:
Essayez-le en ligne!
la source
gLη€ûJså
est un autre, où vous pouvez voir la vectorisation de la palindromisation en utilisant€û
palindromiser chacun.gLη€ûJså
pour un 8 octets qui ne fait pas exploser TIO.Python 2 , 77 octets
Essayez-le en ligne!
la source
Stax , 14 octets
Exécuter et déboguer
Très lent pour les grands nombres.
la source
Attaché ,
575546 octetsEssayez-le en ligne! Ah, c'est beaucoup plus élégant.
Avec
Generate
(49 octets):Explication
La fonction de génération crée simplement le
N
numéro de l'escalier. Ensuite, cette recherche se termine une fois`>=:`#&_
satisfaite. Développé, c'est:Ainsi, cela se termine une fois que la longueur de la sortie de la fonction de génération est au moins celle des entrées. Ainsi, cela génère le plus petit numéro d'escalier au moins aussi longtemps que le numéro d'entrée. Ainsi, si l'entrée est un numéro d'escalier, le résultat sera le même numéro d'escalier, sinon le numéro d'escalier le plus long suivant. En tant que tel, une simple vérification avec égalité à l'entrée d'origine est suffisante pour déterminer s'il s'agissait ou non d'un numéro d'escalier.
Attaché, 55 octets
Essayez-le en ligne! Avec plan ol 'récursivité.
la source
J , 40 octets
Essayez-le en ligne!
Je ne suis pas tout à fait satisfait de ce soluiton - beaucoup de
@
boxe<
.la source
SNOBOL4 (CSNOBOL4) , 109 octets
Essayez-le en ligne!
Curieusement, le remplacement
'1'
dans la deuxième ligne par1
entraîne l'échec du programme à l'entrée de1
.la source
K , 36 octets
Prend une chaîne telle que "12321" comme paramètre.
Cette fonction est écrite comme une longue chaîne d'applications de fonction, comme dans
f g h x
, alors lisez les versions commentées à partir du bas, en remontant.{x+1}
estlambda x: x+1
, x est un nom de paramètre par défaut. Consultez https://pastebin.com/cRwXJn7Z ou l'aide de l'interprète pour les significations de l'opérateur.Nous générons le numéro d'escalier avec
n
au milieu par{,/$(1+!x),1+1_|!x}
:Toute la fonction
{|/($x)~/:{,/$(1+!x),1+1_|!x}'1+!#x}
:la source
Haskell ,
646058 octets-6 grâce à @BMO!
Essayez-le en ligne!
la source
12345678910987654321
, si vous êtes capable de construire une liste avec autant d'éléments.Perl 5
-lp
, 49 octetsEssayez-le en ligne!
0
= véridique, tout le reste = faussela source
Java 10, 142 octets
Essayez-le en ligne.
Explication:
la source
Japt, 11 octets
Prend l'entrée sous forme de chaîne.
Essayez-le
Explication
Alternative,
109 octetsCette solution, qui peut prendre l'entrée sous la forme d'une chaîne ou d'un entier, retournera un tableau de nombres pour véridique ou, éventuellement, lancera une erreur pour falsey, si elle ne paralyse pas votre navigateur avant cela. Utiliser avec précaution.
Essayez-le
la source
Rétine ,
4543 octetsEssayez-le en ligne! Le lien inclut des cas de test. Edit: sauvé 2 octets grâce à @Leo. Explication:
Initialiser
n
à1
.Alors que
s
commence et se termine parn
:Supprimer
n
à la fin des
et incrémentern
.Testez s'il
n
reste.la source
\d
s peuvent devenir.
et vous faire économiser deux octetsRegex (PCRE) , 92 octets
Essayez-le en ligne!
Je suis ouvert à toutes suggestions pour améliorer cela.
la source
Merci aux utilisateurs suivants:
Python 2 , 147 octets
Essayez-le en ligne!
la source
true
,false
mais des valeurs véridiques et falsey.1
et0
fonctionnerait par exemples[0]
place destartswith
? Les erreurs sont autorisées, et vous pouvez dire «sorties 1 pour l'escalier, tout le reste (y compris rien) [puisque stderrr est ignoré] pour les non-escaliers».g
n'y en a jamais 1. Vous devriez probablement tester ces solutions avant de les publier ...