Esto no es tarea.Ayúdame a terminar este auto desafío de Python 3.x
Vi this article praising Linq library and how great it is por hacer cosas combinatorias, y pensé para mí mismo: Python puede hacerlo de una manera más legible.
Después de media hora de pintar con Python falle. Por favor termina donde lo dejé. Además, hágalo de la manera más pitonica y eficiente posible, por favor.
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)
Gracias!
Do ¿Quieres más Pythonic o más eficiente? Bien pueden ser cosas muy diferentes. :) –
Lo quiero todo y lo quiero ahora;) Hm ... uno de cada uno, así como ambos. No hay mejor respuesta entonces, aunque tendría que seleccionar una. Por favor incluya timeit one-liner para pruebas de rendimiento si lo hace. –
¿Por qué usa XOR bit a bit en su función divisible? ¿Quisiste decir ** en lugar de ^? – dan04