Un nombre agréable (selon cette définition) est un nombre qui peut être passé par le processus suivant (utilisons 41802000
comme exemple):
- Séparez les nombres identiques de fin (
41802000 => [41802, 000]
) - Triez la première moitié des chiffres et prenez le maximum (
[41802, 000] => [8, 000]
) - Prenez la longueur de l'élément final. Appelez les éléments résultants A et B (
[8, 000] => A=8, B=3
) - N B = A est-il pour tout entier
N
? (True
dans cet exemple; 2 3 = 8)
Si l'entrée résulte True
du processus suivant, elle est considérée comme agréable.
Votre tâche consiste à prendre un entier x
et à afficher s'il x
s'agit d'un nombre agréable. Vous pouvez afficher deux valeurs distinctes pour true et falsey, mais veuillez indiquer ce que vous utilisez dans votre réponse. x
est garanti d'avoir au moins deux chiffres distincts (par exemple, 111
est une entrée non valide). Comme pour la plupart des défis, vous pouvez prendre x
une chaîne ou une liste de chiffres.
C'est un code-golf donc le code le plus court en octets gagne.
Cas de test
Input Output
41802000 1
100 1
123456788 0
451111111 0
234543454545444 0
12 1
41902000 0
92599 1
code-golf
math
decision-problem
caird coinheringaahing
la source
la source
list of digits
- serait-ce une liste des caractères numériques ASCII, ou une liste d'entiers de 0 à 9Réponses:
APL (Dyalog) , 36 octets
Essayez-le en ligne!
Comment?
Presque un poème.
⌽⍵
- inverser une fois l'entrée,1,2=/
- obtenez la liste des différences.⌊\
- ne garder que le premier groupe,⌽
- et retournez-le pour terminer.o←
- attribuer ào
,~o
- changer un et zéro (s),⍵/⍨
- filtrer l'entrée avec,⍎¨
- transformer le résultat en liste de chaque chiffre,⌈/
- et obtenez le maximum. (c'est un)⍵/⍨o
- filtrer l'entrée aveco
unalt (ered),≢
- et prenez la longueur, ce serait B.÷
- obtenez un divisé par ce résultat,*
- et amène A à ce pouvoir.⊢≡⌊
- entier?la source
05AB1E , 11 octets
Essayez-le en ligne!
Explication
Emigna a enregistré 1 octet.
S'appuie sur le fait que si A est un entier positif N élevé à la puissance de B , alors N = A 1 / B , donc il doit être un entier.
la source
UZX
devrait fonctionner au lieu des{θs
41902000
(devrait être faux).418802000
Haskell ,
85757271 octetsEdit : -10 octets en prenant une liste de chiffres au lieu d'une chaîne. Merci à WhatToDo d' avoir signalé que cela est autorisé. -3 octets grâce à la solution d' Ourous dans Clean . -1 octet grâce à user28667 .
Essayez-le en ligne! Prend la saisie sous forme de liste de chiffres. Exemple d'utilisation:
f [4,1,8,0,2,0,0,0]
rendementsTrue
.Explication:
Étant donnée une entrée
s=[4,1,8,0,2,0,0,0]
, nous avonsreverse
la liste et de séparer les éléments principaux avecspan(==last s)
:([0,0,0],[2,0,8,1,4])
. Le modèle correspondant aux(b,a)
rendementsb=[0,0,0]
eta=[2,0,8,1,4]
.La compréhension de la liste
or[n^length b==maximum a|n<-[1..a]]
vérifie si un entiern
compris entre1
et9
satisfaitn^length b==maximum a
, c'est-à-diren^3=8
.la source
a
échouerait dans des cas comme477
.b
, mais vérifie chaque entiern
de0
à9
(anciennement de0
àa
). C'est exactement la spécification pour autant que je vois.Haskell ,
10489 octets@Laikoni a trouvé une solution plus courte , mais c'est le mieux que je puisse faire. Merci @Laikoni de m'avoir fait savoir que nous pouvons également accepter des listes de chiffres en entrée.
Explication:
Essayez-le en ligne!
la source
any(==a)
quand vous pourriez utiliserelem a
?2888
?head.maximum
est toujours plus court quemaximum.concat
de 2 octets et conserve la fonctionnalité.R , 80 octets
Essayez-le en ligne!
Utilise
utf8ToInt - 48
pour diviser le nombre en chiffres. Cela lance un avertissement de la conversion en chaîne.À l'aide de rle, obtenez le nombre de chiffres de fin et la valeur maximale des premiers chiffres. Renvoie vrai si l'une des valeurs comprises entre 0 et max à la puissance du nombre final est égale à la valeur max.
Je pense qu'il y a d'autres opportunités de golf, mais cela peut attendre jusqu'à demain.
la source
function(x,R=rle(rev(utf8ToInt(x)-48)))!max(R$v[-1])^(1/R$l[1])%%1
(66 octets, en prenantx
une chaîne)Gelée , 11 octets
Prend la saisie sous forme de liste de chiffres.
Essayez-le en ligne!
Comment ça marche
la source
R, 66 octets
Cette réponse est plus ou moins un mélange de réponses de MickyT et NofP , et sur leur demande, la voici:
Il prend x comme chaîne.
la source
JavaScript (ES7), 66 octets
Prend l'entrée sous la forme d'une chaîne ou d'un tableau de caractères. Renvoie un booléen.
Cas de test
Afficher l'extrait de code
la source
Clean ,
13012811893 bytesDéfinit la fonction
@
en prenant une liste de chiffres entiers.Essayez-le en ligne!
la source
Python 2 ,
9578 octetsEssayez-le en ligne!
la source
i
vous pouvez supprimer leslen
78 octetsR , 93 octets
Essayez-le en ligne!
Le code prend un entier en entrée et renvoie FAUX si le nombre est agréable, et VRAI sinon.
la source
Python 3 ,
8885 octetsNon golfé:
True
ouFalse
.a ** (1 / b)
soit désactivée d'au moins 0,5 de b √a, ce qui nécessite une valeur supérieure à 2 53 (ou tout autre radix à virgule flottante et mantisse longueur que Python utilise, voirsys.float_info
).la source
int
etrange
. (À un certain point, il deviendrait plus possible d'estimer la plage de recherche basée sur onta^(1/b)
que de calculer de grandes quantités de pouvoirs.)C (gcc) ,
144126117 octetsEssayez-le en ligne!
la source
Ruby , 64 octets
Entrée sous forme de chaîne, renvoie vrai si:
Essayez-le en ligne!
la source
Perl 6 , 55 octets
Essayez-le en ligne!
Après l'évaluation de l'expression rationnelle initiale - qui ne peut réussir que si l'entrée est un entier positif -
$0
contient la partie initiale du nombre et$1
contient les chiffres répétés de fin.La
comb
méthode sans arguments, appliquée à une chaîne, renvoie une liste des caractères qui, dans un contexte numérique, correspond à la longueur de la liste.$0.comb.max
Est donc le plus grand des chiffres du préfixe, et$1.comb
la longueur du suffixe.Nous vérifions ensuite si
any(^10)
(c'est-à-dire la jonction or des nombres de 0 à 9), lorsqu'il est élevé à la puissance de la longueur du suffixe, est égal au plus grand chiffre du préfixe. L'so
évaluation booléenne des forces de la jonction résultante, qui, autrement, serait très bien en soi comme valeur véridique, mais le défi exige que seulement deux valeurs distinctes soient retournées.la source
.
place de\d
.Kotlin , 106 octets
Sortie: vrai / faux
Essayez-le en ligne!
la source
Ajouter ++ , 21 octets
Essayez-le en ligne!
Cela fait 3 mois et demi, j'espère que je ne suis pas ninja.
la source
C # (.NET Core) , 132 octets
Essayez-le en ligne!
Remerciements
-12 octets grâce à @KevinCruijssen
DeGolfed
la source
i=n.Length-2;for(;i>=0;i--)
peut être joué au golfi=n.Length-1;for(;i-->0;)
et&&
peut être joué au golf&
.using System;
et en utilisantSystem.Math.Pow
directement.-48
peut être joué sur -3 octets.Japt ,
2618 octetsEssayez-le en ligne!
Prend l'entrée sous forme de chaîne, renvoie
1
pour les nombres agréables,0
sinon.Brève explication:
Prenez la première entrée et divisez-la par des valeurs où
(x,y) => x===y
c'est vrai. Par exemple'41802000'
pour['4','1','8','0','2','000']
.Prenez le tableau de la première étape, retirez le dernier élément et obtenir sa longueur, ce qui donne B .
Trouvez le plus grand élément du tableau restant, ce qui donne A , portez-le à la puissance
1/B
, puis revenez si le résultat est divisible par un.Première collaboration avec Japt, très ouvert à toutes recommandations.
Rasé de 8 octets grâce à ETHproductions .
la source
ó¶
. 2) Je ne sais pas pourquoi vous avez lev
dans la deuxième ligne, car il convertit simplement la chaîne en minuscules et n'a aucun effet sur la longueur ;-) 3) Vous pouvez éviter le!(U
sur la dernière ligne en changeant%1
env1
, qui retourne1
si le sujet est divisible par 1 ou0
autrement.Clojure, 168 octets
Essayez-le en ligne!
la source
Fusain , 33 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Sorties a
-
pour des nombres agréables. Explication:Divisez l'entrée
q
en caractères.Supprimez le dernier caractère de
q
et poussez-le versu
(prédéfini dans une liste vide).Pop et push à plusieurs reprises tandis que le dernier caractère de
q
est le premier caractère deu
.Prenez le chiffre maximum de
q
et augmentez-le à la puissance de l'inverse de la longueur deu
, puis vérifiez si le résultat est un entier.la source
Python 2 ,
9185 octetsEssayez-le en ligne!
la source
Perl 5 , 73 + 1 (
-p
) = 74 octetsEssayez-le en ligne!
la source
Java 8, 125 octets
Port de la réponse C # .NET de @ Ayb4btu .
Essayez-le en ligne.
Explication:
la source
Pip ,
322221 octetsUtilise
1
pour falsey et0
pour véridique , économisant un octet. Essayez-le en ligne!la source
Pyth, 29 octets
Suite de tests
Traduction Python 3:la source