Найти такие перестановки, чтобы сумма трёх цифр не превосходила 16

Требуется расставить все ненулевые цифры по окружности (каждая цифра используется ровно 1 раз) таким образом, чтобы сумма любых трёх подряд идущих цифр не превосходила 16.

В уме я одну такую перестановку нашёл: 158267349.

Как найти на Питоне все такие перестановки? Заранее благодарю за ответ.


Ответы (2 шт):

Автор решения: entithat
  1. Находим все перестановки.
  2. Ищем сумму в любой тройке цифр больше 16 в каждой перестановке
  3. Делаем фильтр по этому

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)
→ Ссылка