Pour un nombre entier positif donné N, écrivez un programme complet pour trouver le M naturel minimal tel que le produit des chiffres de M soit égal à N. N est inférieur à 1 000 000 000. Si aucun M n'existe, imprimez -1. Dans tous les cas, votre code ne devrait pas prendre plus de 10 secondes.
Sample Inputs
1
3
15
10
123456789
32
432
1296
Sample Outputs
1
3
35
25
-1
48
689
2899
1
donner1
est un important test.Réponses:
Golfscript,
45 4340 caractèresRemplace la version qui ne regroupait pas les petits nombres premiers en pouvoirs et enregistre 8 caractères en le faisant. Remarque: 12 = étage (9 log 10 / log 5).
Remerciements: deux personnages sauvés en exécutant une astuce de @mellamokb; 3 enregistré avec un indice de @Nabb.
la source
12345
donnez-moi -1, alors ça devrait aussi marcher123456789
si je pouvais attendre assez longtemps.Javascript (
84787674727068)http://jsfiddle.net/D3WgU/7/
Edit: idée d'entrée / sortie empruntée à une autre solution et logique de sortie plus courte.
Édition 2: enregistrement de 2 caractères en supprimant les accolades inutiles en
for
boucle.Edit 3: 2 caractères enregistrés en réécrivant la
while
boucle en tantif
qu'instruction aveci++
.Édition 4: enregistrement de 2 caractères en se déplaçant et en réduisant les opérations
i
.Edit 5: Convertir l'instruction if au format ternaire en économisant 2 caractères supplémentaires.
Edit 6: Enregistrez 2 caractères en vous déplaçant
i--
dans la vraie partie du ternaire, supprimez++i
.la source
prompt
chose.m?m:1
=>m||1
JavaScript,
8872787469684 caractères de plus, mais en fait un script exécutable (par opposition à une fonction).Edit: En utilisant des idées de l'autre JavaScript, je peux le réduire à ceci:Finalement! Une solution à 69 caractères, n'utilise que 1 pour la boucle;)D'accord, rasé une virgule.
la source
awk (
6361595857)la source
Perl
(75)(72)inspiré par le code javascript de mellamokb; destiné à être exécuté avec un paramètre
la source
GolfScript (
6057)Éditer
Ok, je pense que cette version donne maintenant une sortie correcte pour chaque cas :-)
Modifier 2
Rasé 3 caractères selon les suggestions de @ Peter.
la source
1
donner1
est un cas de test important est qu'il s'agit d'un cas spécial désagréable - le seul numéro pour lequel le chiffre1
apparaît dans la sortie. Et ça casse votre code, je le crains.[
- si vous n'en avez pas[
sur la pile lorsque vous évaluez un,]
il faut tout sur la pile. Et vous pouvez probablement enregistrer deux caractères vers la fin en n'encapsulant pas-1
dans un tableau et en déplaçant la finale$
.Haskell
la source
(show m)
pour$show m
.m<-[1..9^9]
.... sinon c'est une liste infinie ... donc-1
ne se produira jamais .... corrigez-moi si je me trompe.Windows PowerShell, 87
la source
Perl (68)
Il semble que l'astuce géniale que @mellamokb utilise en javascript pour éviter la boucle imbriquée se traduise bien en perl mais elle sort beaucoup plus verbeuse car vous ne pouvez plus utiliser la
foreach
boucle de style. Il est également dommage que perl ne pense pasmap
qu'une boucleredo
serait utile.la source
scala 106 caractères:
Test et invocation:
Temps de réponse: immédiatement, <1 s sur CPU 2Ghz.
la source
Gelée ,
181310 octetsEssayez-le en ligne!
Solution à 13 octets:
Essayez-le en ligne!
Explication avec entrée
N
:Solution à 18 octets:
Essayez-le en ligne!
Le dernier lien consiste uniquement à remplacer 0 (la valeur de falsey par défaut de Jelly, car toutes les listes sont indexées) par -1. Si vous considérez 0 comme une valeur de falsey OK, le programme est de 8 octets .
la source
$ƊƲµ
. (2) Comme la chaîne-1
et le nombre-1
sont identiques lors de la sortie, l'utilisation du nombre économise 2 octets. (3)P
est un raccourci pour×/
. (4) Échec d'entrée3125
._¬$
devrait marcher’¹¬?
o-
est encore plus court.µ
je pouvais juste l'utiliser_¬
sans avoir$
économisé 2 octets! Mais je me suis alors rendu compte queo-
je pouvais tout simplement omettre leµ
tout et économiser 3 octets!Rubis (100)
la source
Python 2 , 89 octets
Essayez-le en ligne!
Tout simplement parce qu'il n'y a pas encore de réponse Python. Il est vraiment pénible de ne pas avoir de conversion de type implicite entre chaîne et int.
la source