Dans cette variante du casse - tête à quatre fours, vous devez utiliser jusqu'à x
x's
(et aucun autre nombre) et un ensemble défini d'opérations pour atteindre chaque nombre de 0 à 100. Si x = 4
alors vous pouvez utiliser jusqu'à quatre 4s
et cette question devient les quatre fours classiques puzzle (sauf que vous pouvez utiliser jusqu'à quatre 4 plutôt que d'avoir à en utiliser exactement quatre). Nous supposons 1 < x <= 9
.
Dans cette version, seuls les opérateurs suivants sont autorisés:
- Addition (
+
), Soustraction (-
), Multiplication (*
), Division (/
). Notez que c'est une vraie division, alors5/2 = 2.5
. - Exponentiation (par exemple 4 ^ 4) car cela n'impliquerait aucun symbole supplémentaire s'il était écrit normalement à la main.
- Vous pouvez créer de nouveaux entiers en concaténant
xs
. Par exemple, vous pouvez faire des entiers4, 44, 444, 4444
.
Vous pouvez également utiliser des parenthèses pour regrouper des nombres simplement afin de contrôler l'ordre d'évaluation des opérateurs. Vous ne pouvez pas par exemple combiner des parenthèses avec une concaténation comme dans (4/4)(4/4) = (1)(1) = 11
.
Aucun autre symbole ne peut être utilisé et l'ordre des opérations standard s'applique.
Votre programme doit générer, étant donné un x
dans la plage définie et un n
entre 0
et 100
inclus, une solution correcte pour cette entrée si elle existe. Sinon, votre code doit générer quelque chose pour indiquer qu'aucune telle solution n'existe.
Vous devez pouvoir exécuter votre soumission jusqu'à son terme sur votre machine pour toutes les valeurs d'entrée de x
et n
dans la plage autorisée. C'est le golf de code, donc la solution la plus courte l'emporte.
Cette ancienne question connexe utilise plus d'opérateurs (et seulement 4s) et donc tous les nombres de 0 à 100 sont résolubles, ce qui ne sera pas vrai pour ce défi.
Entrée et sortie
Votre code prend deux entiers x
et n
en entrée et doit générer une solution (ou une indication qu'il n'y a pas de solution) dans n'importe quel format lisible par l'homme que vous jugez pratique. L'entrée 4 6
signifierait par exemple "En utilisant jusqu'à quatre 4, faites le nombre 6". Donc, si l'entrée est 4 6
la sortie pourrait l'être (4+4)/4+4
.
Réponses:
Python 3 , 265 octets
Essayez-le en ligne!
Fonctionne pour tous les numéros de la référence liée par Engineer Toast.
Fonctionne jusqu'à
x=8
on tio,x=9
prend quelques minutes sur ma machine.La fonction
g
renvoie un ensemble de toutes les combinaisons avec au plus lex
nombre dex
.f
puis les parcourt et renvoie le premier qui évalue le nombren
.Le nombre de valeurs possibles que j'ai trouvées pour chacune
x
est:Tous les numéros ci - dessus peuvent être générés à partir
(a+b)
,(a-b)
,(a+b)
,a*b
,a/b
,(a/b)
eta^b
.a+b
eta-b
ne donnez pas plus de chiffres.a^b
n'est également utilisé qu'une seule fois, sinon des nombres énormes sont créés (cela est également vérifié dans le document de référence ci-dessus)Une version alternative qui court-circuite dès qu'elle trouve une solution (pas aussi golfée):
C'est beaucoup plus rapide car
x=7..9
tous les nombres peuvent être créés.Python 3 ,
338289 octetsEssayez-le en ligne!
la source
(4/4**(4-4))
pour4
) mais il s'avère que ce n'est pas le cas.exit(e)
est plus court quereturn e