Ce ne sont pas des devoirs.Aidez-moi à terminer cet auto-défi Python 3.x
J'ai vu this article praising Linq library and how great it is pour faire des trucs combinatoires, et je me suis dit: Python peut le faire d'une manière plus lisible. Après une demi-heure de tamponnage avec Python j'ai échoué
S'il vous plaît finir où je me suis arrêté. Aussi, faites-le de la manière la plus pythonique et efficace possible s'il vous plaît.
from itertools import permutations
from operator import mul
from functools import reduce
glob_lst = []
def divisible(n): return (sum(j*10^i for i,j in enumerate(reversed(glob_lst))) % n == 0)
oneToNine = list(range(1, 10))
twoToNine = oneToNine[1:]
for perm in permutations(oneToNine, 9):
for n in twoToNine:
glob_lst = perm[1:n]
#print(glob_lst)
if not divisible(n):
continue
else:
# Is invoked if the loop succeeds
# So, we found the number
print(perm)
Merci!
Do vous voulez le plus Pythonic ou le plus efficace? Ils peuvent bien être des choses très différentes. :) –
Je veux tout et je le veux maintenant;) Hm ... un de chaque ainsi que les deux. Il n'y a pas de meilleure réponse alors, bien que je devrais en choisir un. S'il vous plaît inclure time-liner pour les tests de performance si vous le souhaitez. –
Pourquoi utilisez-vous XOR bit à bit dans votre fonction divisible? Vouliez-vous dire ** au lieu de ^? – dan04