я пытаюсь заставить это работать и печатать в файл, потому что это быстрее, но я не знаю, почему он печатает 7 строк из каждого результата, заканчивающегося огромным файлом, что я делаю неправильно?Я хочу, чтобы 7 чисел были выбраны от 1 до 56 и не более 2 последовательных в каждой итерации, перестановка дает примерно 230 миллионов результатов, поэтому я думаю, что это должно быть меньше, спасибо!
from itertools import combinations, groupby
from operator import itemgetter
f= open('7.txt','w')
data = [1,2,3,4,5,6,7,8,9,10,11,
12,13,14,15,16,17,18,19,
20,21,22,23,24,25,26,27,
28,29,30,31,32,33,34,35,
36,37,38,39,40,41,42,43,
44,45,46,47,48,49,50,51,
52,53,54,55,56]
def find_consecutive(lst, min_string=3):
for k, g in groupby(enumerate(lst), lambda (i,x):i-x):
num_string = map(itemgetter(1), g)
if len(num_string) >= 3:
yield num_string
for i in combinations(data, 7):
if not any(find_consecutive(i, min_string=3)):
for x in i:
f.write(str(i))
f.write('\n')
f.close()