Статья Автор: Лебедев Дмитрий Алексеевич

Шаблоны к задачам 9, 17, 22

Здесь не рассказывается "как решать" задания. Это для тех, кто "может решать", но ещё "желает" усовершенствовать свои навыки

Ко многим заданиям КЕГЭ можно применить "шаблонный подход". Это может дать ощутимый выигрыш времени, если попытаться "причесать" шаблоны к разных заданий под "одну гребенку". В ходе решиний заданий КЕГЭ приобретается опыт, способы решений "стандартизируются" и то, что раньше было непонятным становиться "очевидно-тривиальным".
Попрубуем показать это на примере заданий 9-17-22.
Что их объединяет?
  1. Все задания с файлами (9 и 22 - формат табличного редактора (excel)б 17 - текстовый формат
  2. В 9 и 17 требуется определить "количество", зависящее от условий. В 22 тоже есть зависимости 
  3. В 9 и 17 заданиях меняются условия (но не принципы их),  во всех заданиях вопросы можно считать стандартными
  4. Можно выделить этапы решения, мало зависящие от условий.
Какие "условные элементы" будем использовать:
  • check (...) - проверяеть входные данные на условие задачи. Как правило, возвращает True или False
  • solve(...) - отбирает (с помощью check) из входного набора данных нужные (задание 17) или получает результат обработки (задание 22)
  • для набора данных будем использовать имя df (dataFrame)
  • большинство операций будет совершать с помощью генераторов (если они стандартные)
Процесс решения задания будет состоять:
  1. Написания шаблона (возможно неполного) 
  2. Проверка правильности (похожести) промежуточных результатов
  3. Обработка результатов для получения ответа
Поясним на примерах. 
 


1-й запуск такого шаблона выведет Число строк файла   Последнюю строку
Это может пригодиться для  визуального контроля "полноты правильного выбора файла"
 Добавим в check "распаковку строеи" и проверку одного из условий в конструции
if <условие 1> == False : return False
(Проверям, что в строке есть элемент, повторяющийся не менее трех раз)
2-й запуск уменьшит значение записей и позволит визуально проверить строку на выполнение условия


Теперь добавим проверки остальных условий и программа выдаст требуемый результат
(используем длинные имена для лучшего понимания - в реале используйте короткие,
строки с генераторами создаются с помощью copy-paste)

Условие задания 9 (текстовый файл (копия табличного) - 9-249.txt)
В файле в каждой строке записаны шесть натуральных чисел.
Определите количество строк таблицы, содержащих числа, для которых выполнены следующие условия:
– в строке есть число, повторяющееся не меньше трёх раз;
– в строке есть число, не повторяющееся в этой строке;
– среднее арифметическое всех повторяющихся чисел строки (с учётом количества повторений) больше среднего арифметического неповторяющихся чисел этой строки. В ответе запишите только число.


Для задания 17 шаблон будет состоять из пары программ;
  • solve - которая отберет подходящие пары/тройки, предварительно найдя "дополнительное число для проверок"
    (при отборе используем метод zip)
  • check - которая будет проверять пару/тройку на условия
  • нужные ответы найдем из отобранных пар


1-й запуск шаблона к заданию 17 выдаст число пар (на один меньше размера) и минимальную из сумм
(можно сразу вычислять правильный elem и выводить его)
Для следующего запуска можно написать check (или делать это по частям) и запустить
Поиск ответа (число пар и минимальная/максимальная сумма лучше искать сразу)

Условие к заданию 17 
В файле 17-243.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Определите количество пар чисел, в которых хотя бы один из двух элементов больше, чем наибольшее из всех чисел в файле, делящихся на 151, и в шестнадцатеричной записи хотя бы одного элемента из двух содержится цифра 3. В ответе запишите два числа: сначала количество найденных пар, а затем ‐ минимальную сумму элементов таких пар. В данной задаче под парой подразумевается два идущих подряд элемента последовательности.


Шаблон к заданию 22 несколько другого рода.
  • Нужна подпрограмма, преобразующая строку в "приемлемый стандарт"
  • Можно сразу решить задачу в "полном объеме" - то есть для всех процессов получить время старта и завершения 
    (достаточно получать/хранить только время завершения или время старта)
После получения таких сведений можно (легко) найти ответ на любой "разумный" вопрос 


Условие к заданию 22 (текстовый файл (копия табличного) - 22_135.txt)
Определите минимальное время, через которое завершится выполнение всей совокупности процессов, при условии, что все независимые друг от друга процессы могут выполняться параллельно.
Если вопрос будет другим, например - сколько процессов завершидось за первые 45 секунд, то в решении надо изменить только последнюю строку 
(в программе это второй принт)
 

ЗЫ. В каком порядке решать задания? Маленькая деталь
  • для 9 и 22 задания надо будет скопировать данные и табличного редактора в блокнот 
    Табличный редактор откроется "после клика по скаченному файлу", 
    а где "блокнот" (поиски займут какое-то время)
  • Но при решении задания 17 надо будет(желательно) посмотреть на файл, а он по клику откроется в блокноте. Вау!! 
  • Значит начинаем с задания 17 и получаем дополнительный бонус:
    • шаблон 17 задания включает и check и solve. 
      check пригодится в задании 9, 
      solve в задании 22
Вывод -
  1. пишем задание 17,
  2. затем сохраняем как 22 (добавляем zap, меняем solve, check не удаляем)
  3. переходим к заданию 9 (сохраняем как 9) меняем check
Можно иначе. Подберите для себя наиболее удобный вариант.
Главное, подумайте об этом smiley
Печать