Алгоритм решения задания 8 ЕГЭ по информатике. Часть 3

Алгоритм решения задания 8 ЕГЭ по информатике. Часть 3Ах, ЕГЭ по информатике — тот самый экзамен, который заставляет даже самых стойких школьников задуматься: «А не пойти ли мне лучше в цирк к клоунам?» Но сегодня мы с вами окунёмся в третий тип восьмого задания, где царит настоящий хаос цифр и перестановок. Представьте себе: цифры танцуют, перемешиваются, но подчиняются строгим правилам — никакой скуки и однообразия!

Если предыдущие два типа заданий научили нас пользоваться функцией product() как швейцарским ножом для перебора вариантов и подсчёта комбинаций, то теперь мы переходим на новый уровень — permutations(), где каждая цифра должна быть уникальной, словно гости на вечеринке без двойников.

Задания третьего типа — редкие птицы в мире ЕГЭ. Их можно сравнить с динозаврами: все о них слышали, но увидеть вживую — большая удача.

Поэтому примеры будут похожи друг на друга как близнецы-братья, только один носит очки. Наш алгоритм решения почти идентичен второму типу, но мы заменяем product() на permutations(), потому что теперь у нас перестановки!

Это как если бы вы собирали пазл не из одинаковых деталей, а из уникальных кусочков, которые нельзя повторять.

Но вот загвоздка — условие «все цифры различны» сопровождается ещё одной загадочной фразой: «никакие две чётные или две нечётные цифры не стоят рядом». Тут даже опытные программисты могут впасть в ступор и начать подозревать, что это какой-то злой розыгрыш от преподавателей.

Представьте себе число: оно должно быть пятизначным восьмеричным (то есть цифры от 0 до 7), без единицы (потому что 1 решила взять отпуск) и при этом чередовать чётные и нечётные цифры так аккуратно, будто танцует кадриль на балу.

Первый порыв — пройтись по каждой паре соседних цифр и проверить их чётность. Если вдруг две чётных или две нечётных окажутся рядом — значит число нарушило закон джунглей чисел и сразу отправляется в корзину.

Звучит просто? Пожалуй!

Помните анекдот про программиста? Он решил проверить свой код на ошибки и написал функцию all(), которая проверяла всё подряд.

В итоге программа работала так долго, что успела написать мемуары до завершения проверки!

Чтобы избежать таких приключений, создадим функцию is_even_pair (хотя честно говоря название звучит так же логично, как если бы назвать собаку «Кошка»). Эта функция принимает число в виде строки и пробегается по его индексам от нуля до предпоследнего символа. Она проверяет четность текущей цифры и следующей за ней.

Если обе чётные или обе нечётные — функция сразу кричит «Фальшивка!» и возвращает False. А если всё хорошо — True.

Вот тут начинается магия программирования: благодаря этой функции мы можем перебрать все возможные пятизначные числа из нашего алфавита (0-7 без единицы) с помощью permutations().

Каждая перестановка проверяется функцией is_even_pair на соответствие правилу чередования четности.

Кстати о чередовании: это напоминает мне старую историю про двух друзей-программистов. Один говорит другому: «Я решил завести блог о программировании». Второй отвечает: «А ты уверен?

Там же нужно регулярно писать!» Первый задумался и ответил: «Да я планирую чередовать темы: один день пишу код, другой день ничего не делаю». Вот такой у него был способ поддерживать баланс между активностью и отдыхом — почти как наши числа с чередованием четных и нечётных!

This entry was posted in Школьная информатика. Bookmark the permalink.