Найти такие перестановки, чтобы сумма трёх цифр не превосходила 16
Требуется расставить все ненулевые цифры по окружности (каждая цифра используется ровно 1 раз) таким образом, чтобы сумма любых трёх подряд идущих цифр не превосходила 16.
В уме я одну такую перестановку нашёл: 158267349.
Как найти на Питоне все такие перестановки? Заранее благодарю за ответ.
Ответы (2 шт):
Автор решения: entithat
→ Ссылка
- Находим все перестановки.
- Ищем сумму в любой тройке цифр больше 16 в каждой перестановке
- Делаем фильтр по этому
from itertools import permutations
a = 123456789
print(list(filter(
lambda x: not any(sum(map(int, (x+x)[i:i+3])) > 16 for i in range(len(x))),
map(''.join, permutations(str(a)))
)))
Автор решения: SergFSM
→ Ссылка
вот простое решение грубым перебором, но вроде работает:
from itertools import permutations
for p in permutations([1,2,3,4,5,6,7,8,9]):
c = p + p[:2]
if all(sum(i)<17 for i in zip(c,c[1:],c[2:])):
print(p)
результат:
(1, 5, 8, 2, 6, 7, 3, 4, 9)
(1, 6, 7, 2, 5, 8, 3, 4, 9)
(1, 6, 7, 3, 4, 8, 2, 5, 9)
(1, 6, 7, 3, 4, 9, 2, 5, 8)
(1, 6, 7, 3, 5, 8, 2, 4, 9)
(1, 6, 8, 2, 5, 7, 3, 4, 9)
(1, 6, 8, 2, 5, 7, 4, 3, 9)
(1, 7, 6, 3, 4, 9, 2, 5, 8)
(1, 8, 5, 2, 9, 4, 3, 6, 7)
(1, 8, 5, 2, 9, 4, 3, 7, 6)
(1, 9, 3, 4, 7, 5, 2, 8, 6)
(1, 9, 4, 2, 8, 5, 3, 7, 6)
(1, 9, 4, 3, 7, 5, 2, 8, 6)
(1, 9, 4, 3, 7, 6, 2, 8, 5)
(1, 9, 4, 3, 8, 5, 2, 7, 6)
(1, 9, 5, 2, 8, 4, 3, 7, 6)
(2, 4, 9, 1, 6, 7, 3, 5, 8)
(2, 5, 7, 3, 4, 9, 1, 6, 8)
(2, 5, 7, 4, 3, 9, 1, 6, 8)
(2, 5, 8, 1, 6, 7, 3, 4, 9)
(2, 5, 8, 1, 7, 6, 3, 4, 9)
(2, 5, 8, 3, 4, 9, 1, 6, 7)
(2, 5, 9, 1, 6, 7, 3, 4, 8)
(2, 6, 7, 3, 4, 9, 1, 5, 8)
(2, 7, 6, 1, 9, 4, 3, 8, 5)
(2, 8, 4, 3, 7, 6, 1, 9, 5)
(2, 8, 5, 1, 9, 4, 3, 7, 6)
(2, 8, 5, 3, 7, 6, 1, 9, 4)
(2, 8, 6, 1, 9, 3, 4, 7, 5)
(2, 8, 6, 1, 9, 4, 3, 7, 5)
(2, 9, 4, 3, 6, 7, 1, 8, 5)
(2, 9, 4, 3, 7, 6, 1, 8, 5)
(3, 4, 7, 5, 2, 8, 6, 1, 9)
(3, 4, 8, 2, 5, 9, 1, 6, 7)
(3, 4, 9, 1, 5, 8, 2, 6, 7)
(3, 4, 9, 1, 6, 7, 2, 5, 8)
(3, 4, 9, 1, 6, 8, 2, 5, 7)
(3, 4, 9, 2, 5, 8, 1, 6, 7)
(3, 4, 9, 2, 5, 8, 1, 7, 6)
(3, 5, 8, 2, 4, 9, 1, 6, 7)
(3, 6, 7, 1, 8, 5, 2, 9, 4)
(3, 7, 5, 2, 8, 6, 1, 9, 4)
(3, 7, 6, 1, 8, 5, 2, 9, 4)
(3, 7, 6, 1, 9, 4, 2, 8, 5)
(3, 7, 6, 1, 9, 5, 2, 8, 4)
(3, 7, 6, 2, 8, 5, 1, 9, 4)
(3, 8, 5, 2, 7, 6, 1, 9, 4)
(3, 9, 1, 6, 8, 2, 5, 7, 4)
(4, 2, 8, 5, 3, 7, 6, 1, 9)
(4, 3, 6, 7, 1, 8, 5, 2, 9)
(4, 3, 7, 5, 2, 8, 6, 1, 9)
(4, 3, 7, 6, 1, 8, 5, 2, 9)
(4, 3, 7, 6, 1, 9, 5, 2, 8)
(4, 3, 7, 6, 2, 8, 5, 1, 9)
(4, 3, 8, 5, 2, 7, 6, 1, 9)
(4, 3, 9, 1, 6, 8, 2, 5, 7)
(4, 7, 5, 2, 8, 6, 1, 9, 3)
(4, 8, 2, 5, 9, 1, 6, 7, 3)
(4, 9, 1, 5, 8, 2, 6, 7, 3)
(4, 9, 1, 6, 7, 2, 5, 8, 3)
(4, 9, 1, 6, 7, 3, 5, 8, 2)
(4, 9, 1, 6, 8, 2, 5, 7, 3)
(4, 9, 2, 5, 8, 1, 6, 7, 3)
(4, 9, 2, 5, 8, 1, 7, 6, 3)
(5, 1, 9, 4, 3, 7, 6, 2, 8)
(5, 2, 7, 6, 1, 9, 4, 3, 8)
(5, 2, 8, 4, 3, 7, 6, 1, 9)
(5, 2, 8, 6, 1, 9, 3, 4, 7)
(5, 2, 8, 6, 1, 9, 4, 3, 7)
(5, 2, 9, 4, 3, 6, 7, 1, 8)
(5, 2, 9, 4, 3, 7, 6, 1, 8)
(5, 3, 7, 6, 1, 9, 4, 2, 8)
(5, 7, 3, 4, 9, 1, 6, 8, 2)
(5, 7, 4, 3, 9, 1, 6, 8, 2)
(5, 8, 1, 6, 7, 3, 4, 9, 2)
(5, 8, 1, 7, 6, 3, 4, 9, 2)
(5, 8, 2, 4, 9, 1, 6, 7, 3)
(5, 8, 2, 6, 7, 3, 4, 9, 1)
(5, 8, 3, 4, 9, 1, 6, 7, 2)
(5, 9, 1, 6, 7, 3, 4, 8, 2)
(6, 1, 8, 5, 2, 9, 4, 3, 7)
(6, 1, 9, 3, 4, 7, 5, 2, 8)
(6, 1, 9, 4, 2, 8, 5, 3, 7)
(6, 1, 9, 4, 3, 7, 5, 2, 8)
(6, 1, 9, 4, 3, 8, 5, 2, 7)
(6, 1, 9, 5, 2, 8, 4, 3, 7)
(6, 2, 8, 5, 1, 9, 4, 3, 7)
(6, 3, 4, 9, 2, 5, 8, 1, 7)
(6, 7, 1, 8, 5, 2, 9, 4, 3)
(6, 7, 2, 5, 8, 3, 4, 9, 1)
(6, 7, 3, 4, 8, 2, 5, 9, 1)
(6, 7, 3, 4, 9, 1, 5, 8, 2)
(6, 7, 3, 4, 9, 2, 5, 8, 1)
(6, 7, 3, 5, 8, 2, 4, 9, 1)
(6, 8, 2, 5, 7, 3, 4, 9, 1)
(6, 8, 2, 5, 7, 4, 3, 9, 1)
(7, 1, 8, 5, 2, 9, 4, 3, 6)
(7, 2, 5, 8, 3, 4, 9, 1, 6)
(7, 3, 4, 8, 2, 5, 9, 1, 6)
(7, 3, 4, 9, 1, 5, 8, 2, 6)
(7, 3, 4, 9, 1, 6, 8, 2, 5)
(7, 3, 4, 9, 2, 5, 8, 1, 6)
(7, 3, 5, 8, 2, 4, 9, 1, 6)
(7, 4, 3, 9, 1, 6, 8, 2, 5)
(7, 5, 2, 8, 6, 1, 9, 3, 4)
(7, 5, 2, 8, 6, 1, 9, 4, 3)
(7, 6, 1, 8, 5, 2, 9, 4, 3)
(7, 6, 1, 9, 4, 2, 8, 5, 3)
(7, 6, 1, 9, 4, 3, 8, 5, 2)
(7, 6, 1, 9, 5, 2, 8, 4, 3)
(7, 6, 2, 8, 5, 1, 9, 4, 3)
(7, 6, 3, 4, 9, 2, 5, 8, 1)
(8, 1, 6, 7, 3, 4, 9, 2, 5)
(8, 1, 7, 6, 3, 4, 9, 2, 5)
(8, 2, 4, 9, 1, 6, 7, 3, 5)
(8, 2, 5, 7, 3, 4, 9, 1, 6)
(8, 2, 5, 7, 4, 3, 9, 1, 6)
(8, 2, 5, 9, 1, 6, 7, 3, 4)
(8, 2, 6, 7, 3, 4, 9, 1, 5)
(8, 3, 4, 9, 1, 6, 7, 2, 5)
(8, 4, 3, 7, 6, 1, 9, 5, 2)
(8, 5, 1, 9, 4, 3, 7, 6, 2)
(8, 5, 2, 7, 6, 1, 9, 4, 3)
(8, 5, 2, 9, 4, 3, 6, 7, 1)
(8, 5, 2, 9, 4, 3, 7, 6, 1)
(8, 5, 3, 7, 6, 1, 9, 4, 2)
(8, 6, 1, 9, 3, 4, 7, 5, 2)
(8, 6, 1, 9, 4, 3, 7, 5, 2)
(9, 1, 5, 8, 2, 6, 7, 3, 4)
(9, 1, 6, 7, 2, 5, 8, 3, 4)
(9, 1, 6, 7, 3, 4, 8, 2, 5)
(9, 1, 6, 7, 3, 5, 8, 2, 4)
(9, 1, 6, 8, 2, 5, 7, 3, 4)
(9, 1, 6, 8, 2, 5, 7, 4, 3)
(9, 2, 5, 8, 1, 6, 7, 3, 4)
(9, 2, 5, 8, 1, 7, 6, 3, 4)
(9, 3, 4, 7, 5, 2, 8, 6, 1)
(9, 4, 2, 8, 5, 3, 7, 6, 1)
(9, 4, 3, 6, 7, 1, 8, 5, 2)
(9, 4, 3, 7, 5, 2, 8, 6, 1)
(9, 4, 3, 7, 6, 1, 8, 5, 2)
(9, 4, 3, 7, 6, 2, 8, 5, 1)
(9, 4, 3, 8, 5, 2, 7, 6, 1)
(9, 5, 2, 8, 4, 3, 7, 6, 1)