Questo non è compito.Aiutami a completare questa auto-sfida Python 3.x
Ho visto this article praising Linq library and how great it is per fare roba combinatoria, e ho pensato a me stesso: Python può farlo in un modo più leggibile.
Dopo mezz'ora di tamponatura con Python ho fallito. Per favore, finisci dove ho lasciato. Inoltre, fallo nel modo più Pythonic ed efficiente possibile per favore.
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)
Grazie!
Do vuoi più Pythonic o più efficiente? Potrebbero essere cose molto diverse. :) –
Voglio tutto e lo voglio ora;) Hm ... uno di ciascuno e entrambi. Non c'è una risposta migliore allora, anche se dovrei selezionarne una. Si prega di includere timeit one-liner per i test delle prestazioni, se lo si desidera. –
Perché stai utilizzando XOR bit a bit nella funzione divisibile? Intendevi ** invece di ^? – dan04