Loading [MathJax]/extensions/tex2jax.js

Комбинаторные объекты. Модуль itertools


Для генерации комбинаторных объектов можно использовать встроенные функции и модули.

В Python есть специальный модуль itertools.

Подробнее о модуле можно узнать по ссылке: модуль itertools

Основные функции:

  1. product
  2. combinations
  3. combinations_with_replacement
  4. permutations

Примеры использования

Задача №1

Все 4-буквенные слова, составленные из букв К, Л, Р, Т, записаны в алфавитном порядке и пронумерованы. Вот начало списка:

1. КККК
2. КККЛ
3. КККР
4. КККТ

Запишите слово, которое стоит на 67-м месте от начала списка. 

import itertools
sl = 'КЛРТ'
k = 1
for x in itertools.product(sl, repeat = 4):
    if k == 67:
        print(''.join(x))
        break
    k += 1

Задача №2

Маша составляет шестибуквенные слова перестановкой букв слова КАПКАН. При этом она избегает слов с двумя подряд одинаковыми буквами. Сколько различных кодов может составить Маша?

import itertools
sl = 'КАПКАН'
k = 0
S = set()
for x in itertools.permutations(sl):
fl = True
for i in range(len(sl)-1):
if x[i] == x[i+1]:
fl = False
if fl:
S.add(x)

print(len(S))