Использование модуля itertools в Python при решении задач на уроках информатики по теме «Комбинаторика».
методическая разработка по информатике и икт (10, 11 класс)
Очень часто на уроках информатики встречаются задачи перебора различных вариантов последовательностей, состоящих из букв или цифр. Данный класс задач встречается и в Компьютерном ЕГЭ. С 2022 года формат сдачи ЕГЭ изменился и теперь для решения задач можно использовать программные средства и языки программирования. Мы рассмотрим эту возможность решения на языке Python
Скачать:
Предварительный просмотр:
Использование модуля itertools в Python при решении задач на уроках информатики по теме «Комбинаторика».
Очень часто на уроках информатики встречаются задачи перебора различных вариантов последовательностей, состоящих из букв или цифр. Данный класс задач встречается и в Компьютерном ЕГЭ. С 2022 года формат сдачи ЕГЭ изменился и теперь для решения задач можно использовать программные средства и языки программирования. Мы рассмотрим эту возможность решения на языке Python
Перестановки и комбинации набора элементов в Python – это различные расположения элементов набора:
Комбинация – это набор элементов, порядок которых не имеет значения.
Перестановка – это расположение набора, в котором порядок имеет значение.
Рассмотрим набор как:{A, B, C}
Перестановки вышеуказанного набора следующие:
('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A')
Комбинации вышеуказанного набора, когда два элемента взяты вместе, следующие:
('A', 'B') ('A', 'C') ('B', 'C')
В этом руководстве мы узнаем, как получить перестановки и комбинации группы элементов в Python. Мы рассмотрим наборы символов и цифр. Мы будем использовать методы combinations() и permutations() в модуле itertools.
Перестановки числовых данных.
Чтобы использовать метод permutations() в модуле itertools, нам сначала нужно импортировать модуль.
from itertools import *
Теперь давайте определим набор чисел.
val = [1, 2, 3, 4]
Теперь, чтобы получить список перестановок, воспользуемся методом permutations().
perm_set = permutations(val)
Строка кода выше дает объект itertools.
Чтобы напечатать различные перестановки, мы будем перебирать этот объект.
for i in perm_set:
print( i,)
Мы получаем результат как кортежи четырех чисел:
(1, 2, 3, 4)-(1, 2, 4, 3)-(1, 3, 2, 4)-(1, 3, 4, 2)-(1, 4, 2, 3)-(1, 4, 3, 2)-(2, 1, 3, 4)-(2, 1, 4, 3)-(2, 3, 1, 4)-(2, 3, 4, 1)-(2, 4, 1, 3)-(2, 4, 3, 1)-(3, 1, 2, 4)-(3, 1, 4, 2)-(3, 2, 1, 4)-(3, 2, 4, 1)-(3, 4, 1, 2)-(3, 4, 2, 1)-(4, 1, 2, 3)-(4, 1, 3, 2)-(4, 2, 1, 3)-(4, 2, 3, 1)-(4, 3, 1, 2)-(4, 3, 2, 1)-
Полный код этого раздела приведен ниже:
from itertools import *
val = [1, 2, 3, 4]
perm_set = permutations(val)
for i in perm_set:
print(I, end=’-‘)
Перестановки строки
Далее мы узнаем, как получить перестановки символов в строке. Мы будем использовать метод permutations(), но на этот раз мы передадим строку в качестве аргумента.
from itertools import *
s = "ABC"
perm_set = permutations(s)
for val in perm_set:
print(val)
Вывод : ('A', 'B', 'C') ('A', 'C', 'B') ('B', 'A', 'C') ('B', 'C', 'A') ('C', 'A', 'B') ('C', 'B', 'A')
Перестановки фиксированной длины
Мы можем найти перестановки набора, в котором мы берем только указанное количество элементов в каждой перестановке.
Код для поиска перестановок фиксированной длины приведен ниже:
from itertools import *
val = [1, 2, 3, 4]
perm_set = permutations(val,2)
for i in perm_set:
print(i)
Вывод : (1, 2) (1, 3) (1, 4) (2, 1) (2, 3) (2, 4) (3, 1) (3, 2) (3, 4) (4, 1) (4, 2) (4, 3)
Комбинации числовых данных.
Так же, как метод permutations(), мы можем использовать combinations() для получения комбинаций набора. При вызове combinations() нам нужно передать два аргумента: набор для поиска комбинаций и число, обозначающее длину каждой комбинации.
from itertools import *
val = [1, 2, 3, 4]
com_set = combinations(val, 2)
for i in com_set: print(i)
Вывод : (1, 2) (1, 3) (1, 4) (2, 3) (2, 4) (3, 4)
Комбинации строки
Мы также можем получить комбинации строки.
from itertools import *
s = "ABC"
com_set = itertools.combinations(s, 2)
for i in com_set: print(i)
Вывод : ('A', 'B') ('A', 'C') ('B', 'C')
Комбинации с заменами
В модуле itertools есть еще один метод, который называется комбинациями with_replacement(). Этот метод также учитывает комбинацию числа с самим собой. Посмотрим, как это работает.
Для числового набора
from itertools import *
val = [1, 2, 3, 4]
com_set = itertools.combinations_with_replacement(val, 2)
for i in com_set:
print(i)
Вывод : (1, 1) (1, 2) (1, 3) (1, 4) (2, 2) (2, 3) (2, 4) (3, 3) (3, 4) (4, 4)
Вы можете видеть разницу в выводе выше и выводе для работы нормальной комбинации. Здесь у нас есть такие комбинации, как (1,1) и (2,2), которых нет в обычных комбинациях.
Для строки
from itertools import *
val = "ABCD"
com_set = combinations_with_replacement(val, 2)
for i in com_set:
print(i)
Вывод : ('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') ('B', 'B') ('B', 'C') ('B', 'D') ('C', 'C') ('C', 'D') ('D', 'D')
Пример 1
Петя составляет семибуквенные слова перестановкой букв слова ТРАТАТА. Сколько всего различных слов может составить Петя?
from itertools import *
val = 'ТРАТАТА'
com_set = list(set(permutations(val)))
print(len(com_set))
Так как в слове ТРАТАТА есть повторяющие буквы Т и А. Создаем множество set в котором убираем одинаковые элементы созданные одинаковыми буквами.
Пример 2
Юрий составляет 4-буквенные слова из букв П, Р, И, К, А, З. Каждую букву можно использовать не более одного раза, при этом в слове нельзя использовать более одной гласной. Сколько различных кодов может составить Юрий?
from itertools import *
val = 'ПРИКАЗ'
com_set = permutations(val, 4)
count = 0
for x in com_set:
if 'И' not in x and 'А' in x or 'А' not in x and 'И' in x or 'И' not in x and 'А' not in x:
count += 1
print(count)
Пример 3
Георгий составляет коды из букв своего имени. Код должен состоять из 7 букв, и каждая буква в нём должна встречаться столько же раз, сколько в имени Георгий. Кроме того, одинаковые буквы в коде не должны стоять рядом. Сколько кодов может составить Георгий?
from itertools import *
k = 0
for x in set(permutations('ГЕОРГИЙ')):
s = ''.join(x)
if 'ГГ' not in s:
k += 1
print(k)
По теме: методические разработки, презентации и конспекты
Статья "Использование средств массовой информации для успешного решения задач современного урока"
Средства массовой информвции, их роль в жизни общества, как эффективнее использовать средства массовой информации для решения задач современного урока...
Использование языка программирования Python для решения задачи 2 ЕГЭ по информатике
В статье приводится пример решения задачи 2 ЕГЭ по информатике, которое успешно решается с помощью короткой программы на языке программирования Python....
Использование языка программирования Python для решения задачи 5 ЕГЭ по информатике (Работа с цифрами числа)
В статье приводится пример решения задачи 5 ЕГЭ по информатике, которое успешно решается с помощью программы на языке программирования Python....
Использование языка программирования Python для решения задачи 6 ЕГЭ по информатике (Анализ простейших программ)
В статье приводится пример решения задачи 6 ЕГЭ по информатике (Анализ простейших программ), которое успешно решается с помощью типичной программы на языке программирования Python....
Использование языка программирования Python для решения задачи 8 ЕГЭ по информатике (Количество информации и комбинаторика)
В статье приводится пример решения задачи 8 ЕГЭ по информатике (Количество информации и комбинаторика), которое успешно решается с помощью программы на языке программирования Python....
Использование языка программирования Python для решения задачи 12 ЕГЭ по информатике (Сложные исполнители и алгоритмы)
В статье приводится пример решения задачи 12 ЕГЭ по информатике (Сложные исполнители и алгоритмы), которое успешно решается с помощью программы на языке программирования Python....
Использование языка программирования Python для решения задачи 26 ЕГЭ по информатике (Программирование, обработка целочисленной информации с использованием сортировки)
В статье приводится пример решения задачи 26 ЕГЭ по информатике (Программирование, обработка целочисленной информации с использованием сортировки), которое успешно решается с помощью программы на язык...