En partant d'un entier positif N , trouvez le plus petit entier N ' pouvant être calculé en divisant plusieurs fois N par un de ses chiffres (en base 10). Chaque chiffre sélectionné doit être un diviseur de N supérieur à 1 .
Exemple 1
La sortie attendue pour N = 230 est N '= 23 :
Exemple n ° 2
La sortie attendue pour N = 129528 est N '= 257 :
Méfiez-vous des chemins non optimaux!
Nous pourrions commencer par 129528/9 = 14392 , mais cela ne conduirait pas au plus petit résultat possible. Le mieux que nous puissions faire si nous divisons d'abord par 9 est:
Règles
- Les entrées peuvent être prises dans n'importe quel format raisonnable (entier, chaîne, tableau de chiffres, ...).
- C'est du code-golf , donc la réponse la plus courte en octets gagne!
Cas de test
1 --> 1
7 --> 1
10 --> 10
24 --> 1
230 --> 23
234 --> 78
10800 --> 1
10801 --> 10801
50976 --> 118
129500 --> 37
129528 --> 257
8377128 --> 38783
655294464 --> 1111
code-golf
integer
optimization
division
Arnauld
la source
la source
Réponses:
Haskell ,
67 à61 octetsEssayez-le en ligne!
Explication:
read.pure<$>show n
transforme l'entiern
en entrée en une liste de chiffres.d
de cette liste, nous vérifionsd>1
etmod n d<1
, c'est-à-dire sid
divisen
.n
pard
et récursive appliquerf
:f$div n d
.n
.n
et renvoyons leminimum
de la liste.la source
Gelée , 8 octets
Essayez-le en ligne!
Version alternative, beaucoup plus rapide, 9 octets
Essayez-le en ligne!
Comment ça marche
la source
Python 2 , 59 octets
Essayez-le en ligne!
la source
Ruby ,
5247 octetsEn compétition pour le groupe de langues non-exotiques! (Remarque: une bonne idée, sinon jouer au golf, est d'ajouter
.uniq
après.digits
car toutes les branches similaires ont des résultats similaires)Essayez-le en ligne!
Explication
la source
x<2|n%x?n:f[n/x]
pour sauvegarder deux ou trois octets (selon que vous ayez besoin d'un|
ou deux)?value%zero
comme une division par zéro, ainsi les court-circuits ne fonctionneront pas. De plus, la0
valeur de vérité est en rubis (les seules valeurs de Falsey sont fausses et nulles).||
s?>0
, mais alors c'est le même nombre de caractères.0
vient le si vous n'utilisez pas|
?Common Lisp , 136 octets
Essayez-le en ligne!
Version lisible:
la source
Gelée , 21 octets
Essayez-le en ligne!
la source
Wolfram Language (Mathematica) , 44 octets
-7 octets grâce à Misha Lavrov.
Essayez-le en ligne!
la source
⋂
caractèreIntersection
. Mais il y a de gros cas qu'il ne peut plus gérer car il manque de mémoireRange[#-1]
.Most@Divisors@#
au lieu deRange[#-1]
pour éviter le problème de mémoire, mais le résultat est 49 octets .JavaScript (Firefox 30-57), 49 octets
Version compatible ES6, 52 octets:
A l’origine, j’essayais de filtrer les chiffres non pertinents, mais il s’avère légèrement plus long à 54 octets:
la source
Kotlin ,
100 à99 octetsEmbellies
Tester
Édite
la source
Gelée , 15 octets
Essayez-le en ligne!
Je dois admettre que cette
߀
partie est empruntée à la réponse d' Erik . Le reste est développé séparément, en partie parce que je ne comprends même pas comment fonctionne le reste de cette réponse: P.Comment ça marche?
* Je suis agréablement surpris que cela
¡
fonctionne comme ça sur les listes, parce que sa signification normale est appliquée n fois .Après que Dennis ait expliqué pourquoi il
߀
n’a pas besoin de condition, nous avons cette version de 12 octets , ou sa version de 8 octets: P.la source
R ,
10198 octetsEssayez-le en ligne!
Une tonne d'octets est utilisée pour extraire les chiffres et ceux qui se divisent
x
; peut-être une autre approche est-elle nécessaire.la source
Excel Vba, 153 octets
Premier code-golf dans la seule langue que je connaisse :( Pas tout à fait favorable au golf ...
Appelle comme ça:
Je ne sais pas où tester cela en ligne.
la source
And N > 0
parN = S
une précédente. (En outre, si j'avais un moyen de le tester, mon premier réflexe serait de vérifier si l'un des espaces peut être supprimé.)APL (Dyalog) , 33 octets
Essayez-le en ligne!
Comment?
⍎¨⍕⍵
- saisir les chiffres den
1~⍨
- hors1
so/⍨
- filtrer par0=⍵|⍨o
- divisibilité den
par le chiffre⍬≡...:⍵
- si vide, retournen
⌊/
- sinon, restituer le minimum de∇¨
- récursivité pour chaque nombre en⍵÷d
- la division den
par chacun des chiffres filtrés ci-dessusla source
Perl 5, 87 + 1 (
-p
) = 88 octetsessayez-le en ligne
la source
PHP, 120 octets
Essayez-le en ligne!
la source
Paris / GP , 49 octets
Essayez-le en ligne!
la source