8.01 Слова в алфавитном порядке
Готовиться с нами - ЛЕГКО!
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Я, Г, О, Д, А, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААГ
3. ААААД
4. ААААО
5. ААААЯ
6. АААГА
.....
Под каким номером в списке идёт последнее слово, которое содержит хотя бы одну букву Я и одну букву Д?
Решение руками:
Заменим буквы на цифры: А - 0, Г - 1, Д - 2, О - 3, Я – 4.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00004
6. 00010
.....
Полученный ряд - числа в пятиричной системе счисления, записанные по возрастанию.
Последнее слово, которое содержит хотя бы одну букву Я и одну букву Д будет выглядеть так ЯЯЯЯД в
пятиричной системе выглядит так — .
Переводим в десятичную систему счисления: .
Но поскольку номер в списке на единицу больше самого числа, то остается добавить к получившемуся числу единицу. Получаем число 3123.
Решение через циклы
Перебираем все 5-буквенные слова из букв А,Г,Д,О,Я в алфавитном порядке, где каждый цикл отвечает за
один символ. Для каждого слова проверяем, содержит ли оно хотя бы одну букву Я и хотя бы одну
букву Д, используя метод count. Если условие выполняется, запоминаем номер этого слова. Так как
требуется последнее подходящее слово, сохраняем все совпадения в список и в конце выводим последний
номер.
alf = "АГДОЯ" # Алфавитный порядок букв c = 0 # Счётчик для нумерации слов arr = [] # Список для номеров подходящих слов # Генерация всех 5-буквенных слов через вложенные циклы for i in alf: # 1-я буква for j in alf: # 2-я буква for k in alf: # 3-я буква for l in alf: # 4-я буква for m in alf: # 5-я буква s = i + j + k + l + m # Собираем слово c += 1 # Увеличиваем счётчик # Проверяем наличие хотя бы одной "Я" и хотя бы одной "Д" if s.count("Я") >= 1 and s.count("Д") >= 1: arr.append(c) # Запоминаем номер слова print(arr[-1]) # Выводим номер последнего подходящего слова
Решение через itertools
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все комбинации
длины 5 из букв А,Г,Д,О,Я в алфавитном порядке. Каждое слово проверяется на наличие хотя бы одной буквы Я и
хотя бы одной буквы Д. Если условие выполняется, запоминаем номер, и в конце выводим номер последнего
подходящего слова.
from itertools import product c = 0 # Счётчик для нумерации слов arr = [] # Список для номеров подходящих слов # Генерация всех возможных 5-буквенных комбинаций for i in product("АГДОЯ", repeat=5): s = "".join(i) # Преобразуем кортеж символов в строку c += 1 # Увеличиваем счётчик # Проверяем наличие хотя бы одной "Я" и хотя бы одной "Д" if s.count("Я") >= 1 and s.count("Д") >= 1: arr.append(c) # Запоминаем номер слова print(arr[-1]) # Выводим номер последнего подходящего слова
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Л, О, Д, К, А, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААД
3. ААААК
4. ААААЛ
5. ААААО
6. АААДА
.....
Под каким номером в списке идёт первое слово, которое не начинается и не заканчивается на А и содержит две буквы Д?
Решение руками:
Заменим буквы на цифры: А - 0, Д - 1, К - 2, Л - 3, О – 4.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00004
6. 00010
.....
Полученный ряд - числа в пятиричной системе счисления, записанные по возрастанию.
На первое место мы не можем поставить А, следовательно там должна быть буква, с минимальным числовым
эквивалентом – Д. С последней позицией аналогично, таким образом в слове уже есть 2 буквы Д. Тогда на остальные
позиции ставим букву А (так как она эквивалентна числу 0). В итоге получаем слово ДАААД, в пятиричной системе
это слово выглядит так — .
Переводим в десятичную систему счисления: .
Но поскольку номер в списке на единицу больше самого числа, то остается добавить к получившемуся числу
единицу. Получаем число 627.
Решение через циклы
Перебираем все 5-буквенные слова из букв АДКЛО в алфавитном порядке, где каждый цикл отвечает за один символ.
Для каждого слова проверяем условия: с помощью индексации – первая и последняя буква не равны А, с помощью
метода count – общее количество букв Д равно двум. Как только встречается первое слово, удовлетворяющее условию,
выводим его номер и завершаем программу.
alf = "АДКЛО" # Алфавитный порядок букв cc = 0 # Счётчик для нумерации слов # Генерация всех 5-буквенных слов через вложенные циклы for i in alf: # 1-я буква for j in alf: # 2-я буква for k in alf: # 3-я буква for n in alf: # 4-я буква for p in alf: # 5-я буква aa = i + j + k + n + p # Собираем слово cc += 1 # Увеличиваем счётчик # Проверяем, что слово не начинается и не заканчивается на "А" # и содержит ровно две "Д" if aa[0] != "А" and aa[-1] != "А" and aa.count("Д") == 2: print(cc) # Выводим номер первого подходящего слова exit() # Завершаем программу после нахождения первого слова
Решение через itertools
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все
комбинации длины 5 из букв АДКЛО в алфавитном порядке. Каждое слово проверяется на выполнение
условий идентично решению через циклы: первая и последняя буква не равны А и в слове ровно две буквы
Д. Как только встречается первое слово, удовлетворяющее условию, выводим его номер и завершаем
перебор.
from itertools import product alf = "АДКЛО" # Алфавитный порядок букв cc = 0 # Счётчик для нумерации слов # Генерация всех возможных 5-буквенных комбинаций for x in product(alf, repeat=5): aa = "".join(x) # Преобразуем кортеж символов в строку cc += 1 # Увеличиваем счётчик # Проверяем, что слово не начинается и не заканчивается на "А" # и содержит ровно две "Д" if aa[0] != "А" and aa[-1] != "А" and aa.count("Д") == 2: print(cc) # Выводим номер первого подходящего слова break # Завершаем перебор
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв C,О,К, записаны в алфавитном порядке. Вот начало списка:
1. ККККК
2. ККККО
3. ККККС
4. КККОК
.....
Запишите слово, которое стоит под номером 147.
Решение руками:
Заменим буквы К, О, С на цифры 0, 1 и 2 соответственно. Тогда начало списка выглядит следующим образом:
1. 00000
2. 00001
3. 00002
4. 00010
...
Получаем, что в нашем списке стоят числа, записанные в троичной системе счисления. На 147 месте будет стоять
число . Переведем его в троичную систему счисления:
.
Заменим цифры на буквы и получим слово ОСОКС.
Решение через циклы
Перебираем все 5-буквенные слова из букв КОС в алфавитном порядке, где каждый цикл отвечает за один символ. Для
каждого слова увеличиваем счётчик, и когда он достигает значения 147, выводим текущее слово и завершаем
перебор.
alf = "КОС" # Алфавитный порядок букв c = 0 # Счётчик для нумерации слов # Генерация всех 5-буквенных слов через вложенные циклы for i in alf: # 1-я буква for j in alf: # 2-я буква for k in alf: # 3-я буква for l in alf: # 4-я буква for m in alf: # 5-я буква s = i + j + k + l + m # Собираем слово c += 1 # Увеличиваем счётчик if c == 147: # Проверяем, достигли ли нужного номера print(s) # Выводим слово под номером 147 break # Завершаем перебор
Решение через itertools
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все комбинации
длины 5 из букв КОС в алфавитном порядке. Для каждого слова увеличиваем счётчик, и когда он достигает значения
147, выводим текущее слово и завершаем перебор.
from itertools import product c = 0 # Счётчик для нумерации слов # Генерация всех возможных 5-буквенных комбинаций из букв К, О, С for i in product("КОС", repeat=5): s = "".join(i) # Преобразуем кортеж символов в строку c += 1 # Увеличиваем счётчик if c == 147: # Проверяем, достигли ли нужного номера print(s) # Выводим слово под номером 147 break # Завершаем перебор
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв К,О,Р,Т, записаны в алфавитном порядке. Вот начало списка:
1. ККККК
2. ККККО
3. ККККР
4. ККККТ
5. КККОК
.....
Под каким номером в списке идёт последнее слово, в котором буквы О и Р встречаются по одному разу?
Решение аналитически:
Заменим буквы на цифры: К - 0, О - 1, Р - 2, Т - 3. Последнее слово, которое содержит по одной из букв О и Р будет ТТТРО или же под номером 33321.
Так как мы использовали четырехбуквенный алфавит, то нужно перевести число 33321 из четверичной системы
счисления в десятичную. . Поскольку номер в списке на единицу больше самого числа, то остается
прибавить к числу 1017 единицу. Получаем 1018.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
alf = "КОРТ" # Алфавит к задаче c = 0 # Номер текущего слова num = 0 # Переменная для записи ответа for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: s = i + j + k + l + m # Формируем слово c += 1 # Номер текущего слова if s.count("О") == 1 and s.count("Р") == 1: # Проверяем главное условие задачи num = c print(num) # Выводим ответ
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт К, далее добавляется О, Р, Т. # Значит правильный порядок: ‘‘КОРТ’’. coun = 0 # Номер текущего слова num = 0 # Переменная для записи ответа for x in product("КОРТ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово coun += 1 # Обновляем номер слова if s.count("Р") == 1 and s.count("О") == 1: # Проверяем главное условие задачи num = coun print(num) # Выводим ответ
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Л,А,Н,Ь записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААЛ
3. ААААН
4. ААААЬ
5. АААЛА
.....
Под каким номером в списке идёт последнее слово, в котором буквы Л и Ь встречаются ровно по два раза?
Решение аналитически:
Присвоим буквам номера: А - 0, Л - 1, Н - 2, Ь - 3. Тогда последнее 5-буквенное слово, в котором будет две буквы Л и Ь - ЬЬНЛЛ или же 33211.
Переведём число в десятичную.
.
Поскольку номер в списке на единицу больше самого числа, то остается прибавить к числу 997 единицу. Получаем 998.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
alf = "АЛНЬ" # Алфавит к задаче c = 0 # Номер текущего слова num = 0 # Переменная для записи ответа for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: s = i + j + k + l + m # Формируем слово c += 1 # Номер текущего слова if s.count("Л") == 2 and s.count("Ь") == 2: # Проверяем главное условие задачи num = coun print(num) # Выводим ответ
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт А, далее добавляется Л, Н, Ь. # Значит правильный порядок: ‘‘АЛНЬ’’. coun = 0 # Номер текущего слова num = 0 # Переменная для записи ответа for x in product("АЛНЬ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово coun += 1 # Обновляем номер слова if s.count("Л") == 2 and s.count("Ь") == 2: # Проверяем главное условие задачи num = coun print(num) # Выводим ответ
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Б,Л,Ю,Д,О, записаны в алфавитном порядке. Вот начало списка:
1. БББББ
2. ББББД
3. ББББЛ
4. ББББО
5. ББББЮ
6. БББДБ
.....
Под каким номером в списке идёт первое слово, в котором нет буквы Б?
Решение аналитически:
Присвоим буквам номера: Б - 0, Д - 1, Л - 2, О - 3, Ю - 4. Тогда первое 5-буквенное слово, в котором нет буквы Б -
ДДДДД или же .
Переведём число в десятичную.
.
Поскольку номер в списке на единицу больше самого числа, то остается прибавить к числу 781 единицу. Получаем 782.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
alf = "БДЛОЮ" # Алфавит к задаче c = 0 # Номер текущего слова for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: s = i + j + k + l + m # Формируем слово c += 1 # Номер текущего слова if s.count("Б") == 0: # Проверяем главное условие задачи print(c) break
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт Б, далее добавляется Д, Л, О, Ю. # Значит правильный порядок: ‘‘БДЛОЮ’’. coun = 0 # Номер текущего слова for x in product("БДЛОЮ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово coun += 1 # Обновляем номер слова if s.count("Б") == 0: # Проверяем главное условие задачи print(coun) break
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв К,О,Ф,Е, записаны в алфавитном порядке. Вот начало списка:
1. ЕЕЕЕЕ
2. ЕЕЕЕК
3. ЕЕЕЕО
4. ЕЕЕЕФ
5. ЕЕЕКЕ
.....
На каком месте от начала списка стоит слово ФЕФКО?
Решение аналитически:
Заменим буквы на цифры: Е - 0, К - 1, О - 2, Ф - 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Тогда слово ФЕФКО
числовом алфавите будет иметь вид .
Переведем полученное значение в десятичную систему счисления:
Тогда получится, что слово ФЕФКО стоит на 823 месте (+1, так как на первом месте стоит 0, на втором - 1, на
третьем - 2 и тд).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
alf = "ЕКОФ" # Алфавит к задаче c = 0 # Номер текущего слова for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: s = i + j + k + l + m # Формируем слово c += 1 # Номер текущего слова if s == "ФЕФКО": # Выводим номер нужного слова print(c)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт Е, далее добавляется К, О, Ф. # Значит правильный порядок: ‘‘ЕКОФ’’. c = 0 # Номер текущего слова for i in product("ЕКОФ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if s == "ФЕФКО": # Выводим номер нужного слова print(c)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв Э,Г,О записаны в алфавитном порядке. Вот начало списка:
1. ГГГГГ
2. ГГГГО
3. ГГГГЭ
4. ГГГОГ
.....
Запишите слово, которое стоит под номером 78.
Решение аналитически:
Заменим буквы на цифры: Г - 0, О - 1, Э - 2.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
5. 00010
.....
Полученный ряд - числа в троичной системе счисления, записанные по возрастанию. Так как порядковый номер
слова всегда на единицу больше, чем само слово, то переведем 77 в троичную систему счисления: .
Значит на 78 месте стоит слово ГЭЭОЭ.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем нужное слово.
a = "ГОЭ" # Алфавит к задаче c = 0 # Номер текущего слова for i in a: for j in a: for n in a: for k in a: for m in a: s = i + j + n + k + m # Формируем слово c += 1 # Номер текущего слова if c == 78: # Записываем нужное слово print(s)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем нужное слово.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт Г, далее добавляется О, Э. # Значит правильный порядок: ‘‘ГОЭ’’. c = 0 # Номер текущего слова for i in product("ГОЭ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if c == 78: # Записываем нужное слово print(s)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв М,О,Р,С, записаны в алфавитном порядке. Вот начало списка:
1. МММММ
2. ММММО
3. ММММР
4. ММММС
5. МММОМ
.....
Под каким номером в списке идёт последнее слово, в котором буква М встречается один раз, а буква Р два раза?
Решение аналитически:
Обозначим буквы: М – 0, О – 1, Р – 2, С – 3.
Тогда последнее слово, в котором буква М встречается один раз, а буква Р два раза – это
Но так как в списке нумерация начинается с единицы, то номер этого слова: .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
a = "МОРС" # Алфавит к задаче c = 0 # Номер текущего слова for i in a: for j in a: for n in a: for k in a: for m in a: s = i + j + n + k + m # Формируем слово c += 1 # Номер текущего слова if s.count("М") == 1 and s.count("Р") == 2: # Проверяем главное условие задачи print(c) # Смотрим на последнее выведенное число. Это и будет ответом.
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт М, далее добавляется О, Р, С. # Значит правильный порядок: ‘‘МОРС’’. c = 0 # Номер текущего слова for i in product("МОРС", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if s.count("М") == 1 and s.count("Р") == 2: # Проверяем главное условие задачи print(c) # Смотрим на последнее выведенное число. Это и будет ответом.
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв К,О,Л,А, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААК
3. ААААЛ
4. ААААО
5. АААКА
.....
Запишите слово, которое стоит под номером 423.
Решение аналитически:
Обозначим буквы: А – 0, К – 1, Л – 2, О – 3.
Так как в списке нумерация начинается с единицы, то мы ищем слово с номером:
Значит, это слово КЛЛКЛ.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем нужное слово.
a = "АКЛО" # Алфавит к задаче c = 0 # Номер текущего слова for i in a: for j in a: for n in a: for k in a: for m in a: s = i + j + n + k + m # Формируем слово c += 1 # Номер текущего слова if c == 423: # Проверяем главное условие задачи print(s)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем нужное слово.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт А, далее добавляется К, Л, О. # Значит правильный порядок: ‘‘АКЛО’’. c = 0 # Номер текущего слова for i in product("АКЛО", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if c == 423: # Проверяем главное условие задачи print(s)
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв И,Н,Ф,А, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААИ
3. ААААН
4. ААААФ
5. АААИА
.....
Укажите количество слов, которые стоят между словами ИНАФФ и НФАИА(включая эти слова).
Решение аналитически:
Заменим буквы на цифры: А - 0, И - 1, Н - 2, Ф - 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Тогда слово ИНАФФ в
числовом алфавите будет иметь вид , а слово НФАИА
.
Переведем полученные значения в десятичную систему счисления:
Тогда получится, что между словами ИНАФФ и НФАИА находится слов (+1, так как
учитываются оба этих слова).
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер первого и последнего нужного слова и посчитаем
ответ.
alf = "АИНФ" # Алфавит к задаче c, res1, res2 = 0, 0, 0 # Номер текущего слова, номер первого нужного слова, номер последнего нужного слова for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: s = i + j + k + l + m # Формируем слово c += 1 # Обновляем номер слова if s == "ИНАФФ": # Запишем номера первого и последнего слова (по условию) res1 = c if s == "НФАИА": res2 = c print(abs(res1 - res2) + 1) # Вычислим, сколько между ними слов. Добавим недостающее слово (по условию крайние слова включены).
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем в переменные номер первого и последнего слова (по условию), вычислим нужное количество.
from itertools import * c, res1, res2 = 0, 0, 0 # Номер текущего слова, номер первого нужного слова, номер последнего нужного слова for i in product("АИНФ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновим номер слова if s == "ИНАФФ": # Запишем номера первого и последнего слова (по условию) res1 = c if s == "НФАИА": res2 = c print(abs(res1 - res2) + 1) # Вычислим, сколько между ними слов. Добавим недостающее слово (по условию крайние слова включены).
Ошибка.
Попробуйте повторить позже
Все 5-буквенные слова, составленные из букв К,О,Р,А, записаны в алфавитном порядке. Вот начало списка:
1. ААААА
2. ААААК
3. ААААО
4. ААААР
5. АААКА
.....
Запишите слово, которое стоит под номером 318.
Решение аналитически:
Заменим буквы на цифры: А - 0, К - 1, О - 2, Р - 3.
Теперь запишем 5-буквенные слова в новом алфавите.
1. 00000
2. 00001
3. 00002
4. 00003
5. 00010
.....
Полученный ряд - числа в четверичной системе счисления, записанные по возрастанию. Так как порядковый номер
слова всегда на единицу больше, чем само слово, то переведем 317 в четверичную систему счисления: .
Значит на 318 месте стоит слово КАРРК.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем нужное слово.
alf = "АКОР" # Алфавит к задаче c = 0 # Номер текущего слова for i in alf: for j in alf: for k in alf: for l in alf: for m in alf: s = i + j + k + l + m # Формируем слово c += 1 # Номер текущего слова if c == 318: # Проверяем главное условие задачи print(s)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем нужное слово.
from itertools import * # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт А, далее добавляется К, О, Р. # Значит правильный порядок: ‘‘АКОР’’. c = 0 # Номер текущего слова for i in product("АКОР", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if c == 318: # Проверяем главное условие задачи print(s)
Ошибка.
Попробуйте повторить позже
Все шестибуквенные слова, составленные из букв Ш, Л, Я, П, А записаны в алфавитном порядке и пронумерованы, начиная с 1. Начало списка выглядит так:
1. АААААА
2. АААААЛ
3. АААААП
4. АААААШ
5. АААААЯ
6. ААААЛА
…
Под каким номером в списке идёт первое слово, которое начинается буквой П, и заканчивается буквой Ш?
Решение аналитически:
Обозначим буквы: А – 0, Л – 1, П – 2, Ш – 3, Я – 4. Тогда первое слово, которое начинается на П и заканчивается на Ш, это
Но так как в списке нумерация начинается с единицы, то номер слова равен .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
a = "АЛПШЯ" # Алфавит к задаче c = 0 # Номер текущего слова for x1 in a: for x2 in a: for x3 in a: for x4 in a: for x5 in a: for x6 in a: s = x1 + x2 + x3 + x4 + x5 + x6 # Формируем слово c += 1 # Номер текущего слова if s[0] == "П" and s[-1] == "Ш": # Проверяем главное условие задачи print(c) # Первый выведенный номер и есть наш ответ
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import product # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт А, далее добавляется Л, П, Ш, Я. # Значит правильный порядок: ‘‘АЛПШЯ’’. c = 0 # Номер текущего слова for x in product("АЛПШЯ", repeat = 6): # repeat обозначает количество букв, в заданных словах их 6 s = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if s[0] == "П" and s[-1] == "Ш": # Проверяем главное условие задачи print(c) break
Ошибка.
Попробуйте повторить позже
Все пятибуквенные слова, составленные из букв Н, У, Б, А, С записаны в алфавитном порядке и пронумерованы, начиная с 1. Начало списка выглядит так:
1. ААААА
2. ААААБ
3. ААААН
4. ААААС
5. ААААУ
6. АААБА
…
Под каким номером в списке идёт слово НУБАС?
Решение аналитически:
Обозначим буквы: А – 0, Б – 1, Н – 2, С – 3, У – 4.
Тогда слово НУБАС имеет вид: .
Но так как в списке нумерация начинается с единицы, то номер слова равен .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
a = "АБНСУ" # Алфавит к задаче c = 0 # Номер текущего слова for x1 in a: for x2 in a: for x3 in a: for x4 in a: for x5 in a: s = x1 + x2 + x3 + x4 + x5 # Формируем слово c += 1 # Номер текущего слова if s == "НУБАС": # Проверяем главное условие задачи print(c)
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import product # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт А, далее добавляется Б, Н, С, У. # Значит правильный порядок: ‘‘АБНСУ’’. c = 0 # Номер текущего слова for x in product("АБНСУ", repeat = 5): # repeat обозначает количество букв, в заданных словах их 5 s = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if s == "НУБАС": # Проверяем главное условие задачи print(c)
Ошибка.
Попробуйте повторить позже
Все шестибуквенные слова, составленные из букв Л, Ю, М, И, К, С записаны в алфавитном порядке и пронумерованы, начиная с 1. Начало списка выглядит так:
1. ИИИИИИ
2. ИИИИИК
3. ИИИИИЛ
4. ИИИИИМ
5. ИИИИИС
6. ИИИИИЮ
…
Под каким номером в списке идёт первое слово, в котором две буквы М стоят рядом?
Решение аналитически:
Пронумеруем буквы: И – 0, К – 1, Л – 2, М – 3, С – 4, Ю – 5.
Тогда первое слово будет ИИИИММ или .
Но так как в списке нумерация начинается с единицы, то номер слова равен
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
#Решение через циклы a = "ИКЛМСЮ" # Алфавит к задаче c = 0 # Номер текущего слова for x1 in a: for x2 in a: for x3 in a: for x4 in a: for x5 in a: for x6 in a: s = x1 + x2 + x3 + x4 + x5 + x6 # Формируем слово c += 1 # Номер текущего слова if "ММ" in s: # Проверяем главное условие задачи print(c) # Первое выведенное значение - наш ответ
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
#Решение через модуль itertools # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт И, далее добавляется К, Л, М, С, Ю. # Значит правильный порядок: ‘‘ИКЛМСЮ’’. from itertools import product c = 0 # Номер текущего слова for x in product("ИКЛМСЮ", repeat = 6): # repeat обозначает количество букв, в заданных словах их 6 s = "".join(x) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if "ММ" in s: # Проверяем главное условие задачи print(c) break
Ошибка.
Попробуйте повторить позже
Все восьмибуквенные слова, в составе которых могут быть только русские буквы А, Б, Ж, К, П, записаны в алфавитном порядке и пронумерованы, начиная с 1.
Ниже приведено начало списка.
1. АААААААА
2. АААААААБ
3. АААААААЖ
4. АААААААК
5. АААААААП
6. ААААААБА
…
Сколько слов находится между первым и последним словами, начинающимися на БЖ и заканчивающимися на КП?
Решение аналитически:
Пронумеруем буквы: A – 0, Б – 1, Ж – 2, К – 3, П – 4.
Тогда первое слово будет БЖААААКП или .
Последнее слово будет БЖППППКП или
Получаем количество слов (исключая первое и последнее):
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 8-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем в переменные номер первого и последнего слова (по условию),
вычислим нужное количество.
a = "АБЖКП" # Алфавит к задаче c = 0 # Номер текущего слова arr = [] # Номера всех подходящих слов for i in a: for j in a: for n in a: for k in a: for m in a: for p in a: for q in a: for w in a: s = i + j + n + k + m + p + q + w # Формируем слово c += 1 # Обновляем номер слова if s[0:2] == "БЖ" and s[-2] == "К" and s[-1] == "П": # Если слово подходит под условие arr.append(c) # Добавим его номер print(max(arr) - min(arr)-1) # Вычислим, сколько слов между первым и последним. Вычитание учитывает лишнее слово, не забудем его исключить.
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем в переменные номер первого и последнего слова (по условию), вычислим нужное количество.
from itertools import * c, res1, res2 = 0, 0, 0 # Номер текущего слова, номер первого нужного слова, номер последнего нужного слова res = [] # Номера всех подходящих слов for i in product("АБЖКП", repeat = 8): # repeat обозначает количество букв, в заданных словах их 8 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова if (s[0:2] == "БЖ") and (s[-2:] == "КП"): # Если слово подходит под условие res.append(c) # Добавим его номер print(max(res) - min(res) - 1) # Вычислим, сколько слов между первым и последним. Вычитание учитывает лишнее слово, не забудем его исключить.
Ошибка.
Попробуйте повторить позже
Все шестибуквенные слова, в составе которых могут быть только русские буквы А, П, Р, Е, Л, Ь записаны в алфавитном порядке и пронумерованы начиная с 1.
Ниже приведено начало списка.
1. АААААА
2. АААААЕ
3. АААААЛ
4. АААААП
5. АААААР
6. АААААЬ
Под каким номером идёт первое слово, в котором буква А не стоит рядом с буквами Е и Л и одна буква повторяется дважды, а остальные различны?
Решение аналитически:
Обозначим буквы – А-0, Е-1, Л-2, П-3, Р-4, Ь-5. Тогда первое слово, в котором буква А не стоит рядом с буквами Е и Л и одна буква повторяется дважды, а остальные различны, это
Но так как в списке нумерация начинается с единицы, то номер слова равен .
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 7-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем номер нужного слова.
a = "АЕЛПРЬ" # Алфавит к задаче c = 0 # Номер текущего слова for i in a: for j in a: for n in a: for k in a: for m in a: for p in a: s = i + j + n + k + m + p # Формируем слово c += 1 # Номер текущего слова # Проверяем главное условие задачи # Нужно наименьший номер, значит двумя одинаковыми буквами будут буквы А # С помощью not any исключим все запрещённые комбинации букв # С помощью all учтём, что все буквы кроме А различны if (s.count("А") == 2 and all(s.count(char) <= 1 for char in "ЕЛПРЬ") and not any(sub in s for sub in ["АЕ", "ЛА", "ЕА", "АЛ"])): print(c) # Первое выведенное слово - наш ответ
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем номер нужного слова.
from itertools import product # Используем product. Порядок использования букв можно заметить в первых словах из условия. # Сначала идёт А, далее добавляется Е, Л, П, Р, Ь. # Значит правильный порядок: ‘‘АЕЛПРЬ’’. c = 0 # Номер текущего слова for i in product("АЕЛПРЬ", repeat = 6): # repeat обозначает количество букв, в заданных словах их 6 s = "".join(i) # join обьединит символы, оставим кавычки пустыми, чтобы получилось единое слово c += 1 # Обновляем номер слова # Проверяем главное условие задачи # Нужно наименьший номер, значит двумя одинаковыми буквами будут буквы А # С помощью not any исключим все запрещённые комбинации букв # С помощью all учтём, что все буквы кроме А различны if (s.count("А") == 2 and all(s.count(char) <= 1 for char in "ЕЛПРЬ") and not any(sub in s for sub in [’АЕ’, ’ЛА’, ’ЕА’, ’АЛ’])): print(c)