To nie jest praca domowa.Pomóż mi zakończyć samoczynne wyzwanie w Pythonie 3.x
Widziałem this article praising Linq library and how great it is za wykonywanie rzeczy kombinatorycznych i pomyślałem: Python może to zrobić w bardziej czytelny sposób.
Po półgodzinnej dabbing w Pythonie zawiodłem. Proszę dokończ tam, gdzie skończyłem. Zrób to również w najbardziej Pythoniczny i wydajny sposób, proszę.
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)
Dzięki!
zrobić chcesz najbardziej Pythonic lub najbardziej wydajne? Mogą to być bardzo różne rzeczy. :) –
Chcę tego wszystkiego i chcę tego teraz;) Hm ... jedno i drugie. Nie ma wtedy najlepszej odpowiedzi, chociaż musiałbym wybrać jedną. W przypadku testowania wydajności prosimy o dołączenie do programu timeit. –
Dlaczego używasz bitowego XOR w swojej funkcji podzielnej? Czy miałeś na myśli ** zamiast ^? – dan04