Оценки, 11 класс, 2017-2018 учебный год

Общее замечание: поскольку все люди уже взрослые, то каждая программа должна быть оснащена Makefile со стандартными целями для сборки и очистки от сгенерированных файлов; далее этого отдельно оговариваться не будет.

Содержимое страницы:

Экзамен

… происходил 18 мая во время регулярных занятий, но занимал 3 урока (вместо двух): нужно же было дать всем возможность вволю и качественно попрограммировать.

В качестве экзамена было написать одну программу, изготовить для неё Makefile и оставить всё это в папке final-exam/ своего домашнего каталога для дальнейшей проверки и оценки.

Общая часть условия: содержимое входных файлов

Содержимое всех входных файлов — слова, разделённые межсловными интервалами: некоторым, большим нуля, количеством идущих подряд межсловных символов. Символы, образующие слова, таковы: λ = (a-z, A-Z, 0-9, -). Остальные символы ASCII-таблицы считаются межсловными или, как бы выразились граждане на языке теории множеств, «все межсловные элементы образуют дополнение указанного подмножества символов λ до всего множества ASCII-символов».

То есть если файл выглядит так:

Meh. Hey, you add$a one and#()two zeros to that or we walk!
    All I want is to be a monkey of moderate intelligence
who_wears_a_suit... that's why I'm transferring to business school!
I was^^^^^all of history's ~great~ ~robot~ actors -----]]]]
Acting Unit 0.8; Thespomat; David Duchovny!
то он состоит из следующего набора слов: «;Meh», «Hey», «you», «add», «one», «and», «two», «zeros», «to», «that», «or», «we», «walk», «All», «I», «want», «is», «to», «be», «a», «monkey», «of», «moderate», «intelligence» «who», «wears», «a», «suit», «that», «s», «why», «I», «m», «transferring», «to», «business», «school», «I», «was», «all», «of», «history», «s», «great», «robot», «actors», «-----», «Acting», «Unit», «0», «8», «Thespomat», «David», «Duchovny».

Вариант для первой половины класса

Есть два входных файла, имена которых передаются программе в качестве аргументов командной строки. Необходимо найти все слова, содержащиеся в первом файле, но не присутствующие во втором, отсортировать их по убыванию количества появлений в файле и вывести на экран в формате

количество.появлений	слово
Для слов с одинаковым количеством появлений выходной порядок должен совпадать с порядком их появления в файле. Сравнение слов осуществляется без учёта регистра символов.

Вариант для второй половины класса

Есть входной файл и целое число N, которые передаются программе в качестве аргументов командной строки. Необходимо вывести все слова, встречающиеся во входном файле чаще, чем N раз. При выводе их необходимо отсортировать по убыванию количества появлений в файле, формат вывода таков:

количество.встреч	слово
Для слов с одинаковым количеством появлений выходной порядок должен совпадать с порядком их появления в файле. Сравнение слов осуществляется без учёта регистра символов.

Вариант для особо талантливых…

…(либо зело занятых) граждан, которые не дошли до кабинета информатики 18-го мая по какой-то безумно уважительной причине, и волнение их  в связи с этим таково, что они прямо даже не могут найти себе места, горько оплакивая свою участь.

Необходимо написать программу, принимающую в качестве аргумента командной строки имена файлов. Каждый из файлов нужно независимо обработать так, как объяснено ниже и поместить в поток стандартного вывода его имя и результат обработки. Файлы считаются состоящими из слов и межсловных разделителей. Слово — это максимальная последовательность идущих подряд букв из набора (a-z, A-Z, 0-9, -), все остальные символы — разделители, их между словами может быть любое натуральное количество.

В файле необходимо найти все слова, получающиеся друг из друга перестановками своих букв (africa и cifaar являются примером таких слов; они называются анаграммами), отсортировать такие слова по их общему количеству в файле и вывести на экран (в сортированном порядке) для каждой анаграммы количество её вхождений в файл и все встретившиеся слова в последовательности, обратной порядку их следования в файле. При сравнении слов необходимо игнорировать регистр символов: большие и маленькие буквы считаются эквивалентными.

То есть если в файле встречались следующие слова: Africa, cifaar, africa, carafi, Firaca, afacir, то соответствующая этой анаграмме строка — «6 afacir Firaca carafi africa cifaar Africa».

Задание необходимо сделать до 23:59 23 мая 2018 года. В полночь SSH-доступ превращается в тыкву и испаряется.

Оценки за экзамен

Поскольку даже после создания версии экзамена, описанной выше («для особо талантливых/зело занятых»), у приличного числа граждан в домашнем каталоге не образовалось вообще ничего похожего на любые попытки экзамен сделать (а я такие попытки тоже искал), то система оценок именно за экзамен (столбец «Ex») сложилась следующая:

Случай Кулакова и Бердина, опоздавших на урок 18 мая, ничего не произносивших в течение всех трёх уроков, отведённых на экзамен в каждой из групп, а в конце сказавших «Нам не хватило компьтеров, мы сделали не бумажке», при том, что 
  1. свободные компьютеры на месте преподавателя и в лаборантской были, я об этом говорил в начале экзамена, специально не садился за преподавательское место, которое пустовало;
  2. доступ к серверу работал до утра 24 мая;
  3. был «официальный» вариант для пропустивших («особо талантливых»);
  4. утром 24 мая признаков экзамена на сервере не было
мною приравнивается к продолжению ничегонеделания на протяжении как минимум большей части обучения в 11 классе и оценивается соответственным символом пустого множества.

Объяснение для последующих поколений

Если вдруг сюда заглянут обучающиеся других наборов, то они должны иметь в виду следующее: нет, я не считаю такие детсадовские задания уровнем экзамена в 11 классе физико-математического потока. Обычно людям выдавали в начале четвёртого полугодия список (интересных) задач, они могли выбрать себе приличную или придумать свою, после чего реализовывали и приходили сдавать и разговаривать о сделанном (а также — о несделанном).

Устроенный цирк с повторной сдачей экзамена «дистанционно» для приличной части класса я также считаю малоприемлемым. Как и систему оценок «за второе полугодие выставляем по сданным в первом задачам, а ежели кто-то сподобился сдать задачи второго полугодия — это сразу зачёт экзамена».

Однако выпуск 2016—2018 годов настолько чудесно делал и сдавал домашние работы (одни, видимо, подумали, что рассказываемое тут для них слишком сложно, другие — что слишком просто; и те, и другие ошиблись, кстати), что всё пришло к вот такому тривиальному упражнению, которое ещё и печально (но вполне ожидаемо: consuetūdo est altĕra natūra) завершилось.

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

Отдельный привет классному руководителю, который на довольно регулярные оповещения «дети ничего не делают, вы интересовались происходящим с успеваемостью, обратите, пожалуйста, внимание» отвечал «такие дети, да, что же нам с ними делать-то…». Вот ведь действительно, что же?…

Также у меня есть теоретически предсказанный (не сходя с места в момент возникновения вопроса) и экспериментально проверенный (за почти весь 2017—2018 учебный год) ответ родителям, на собраниях говорившим «ребёнки же не видят на сайте условий задач, а откуда им ещё их брать-то?». Задания для 11 класса есть все, они актуализировались на сайте (как, кстати, и оценки) в день своего появления. И ответ такой: «гражданам просто нужно трудиться, проблема именно в этом».

Второе полугодие и итог

Полугодие уже началось… и даже закончилось. Оценки за него, фактически, ставились по результатам работы в первом, а сданные задачи с 47 по 50 приводили к автоматическому получению «отлично» за экзамен.

Задание: 47 48 49 50 H2 Ex Ω
Группа раз
Бердин - - - - 2 2
Голубев - - - - 2 2
Кайкова - - - - 2 2
Клумова - - - - 2 2
Кулаков - - - - 2 2
Лопатина - - - - 4 3- 4-
Лукаш - - - - 4 2 3
Нефёдов - - - - 2 2+ 3-
Самойлов - - - - 2 2
Трушин - - - - 4 5- 4+
Группа два
Бычко - - - - 2 2 2
Глазова - - - - 3 2
Грянченко - - - - 2 2
Демченко - - - - 3 3- 3-
Зиновьев - - - - 2 2 2
Киселёв - - - - 2 2 2
Радько - - - - 3 3 3-
Расщупкин - - - - 2 2 2
Тарасюк - - - - 2 2 2
Фомченков - - - - 2 2
Хабарова - - - - 2 2
Группа три
Бронников - - - - 2 2 2
Зинин - - - - 3 2
Кондрашина - - - - 3 2
Ляхов - - - - 2 2 2
Насыров - - - - 2 2
Никитченко 4 4 4 4 4 5 5-
Смирнова - - - - 3 2
Фёдоров - - - - 2 2
Цейтлин - - - - 5 3- 4
Шафаревич - - - - 2 2
Задание: 47 48 49 50 H2 Ex Ω
Легенда: 47 —ферзи, 48 —конь, 49 —«эргодический» кубик, 50 —«менее эргодический» кубик.

Задача 50

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

Задача 49

В одном страшно секретном детском саду играют в следующую игру:

Вопросы, которые могут возникнуть у воспитателей, наблюдающих за этим безобразием:
  1. есть ли какая-то регулярность в тех числах, которые будут возникать на гранях куба через некоторое время?
  2. если регулярность есть, то какими будут эти числа через месяц, год и десять лет (дети вырастут и пойдут в школу, но проходя мимо детского сада будут заглядывать и производить привычные операции)?
  3. зависит ли ответ от изначальных чисел, нанесённых на грани в первый раз?

Необходимо подумать над этими вопросами, а также — написать программу, симулирующую происходящее и проверить свои смелые догадки относительно получающихся ответов «на практике».

Задача 48

Найти все решения задачи об обходе конём шахматной доски размера NxN полностью, но без самопересечений его пути. Программе в командной строке задаётся значение N и начальные координаты коня. Результаты работы: количество вариантов и псевдографическое представление каждого из них.

Задача 47

Найти все решения задачи о расстановке N ферзей на шахматной доске размера NxN так, чтобы ни один из них не бил никакого другого. Программе в командной строке задаётся значение N. Результаты работы: количество вариантов и псевдографическое представление каждого из них.

Первое полугодие

При выставлении оценок за первое полугодие учитываются задания с 34-го по 46-е включительно.

Поскольку последний месяц занятий был посвящён строго сдаче заданий полностью, то каких-то дополнительных сдач я не особенно предвижу. Последняя сдача — 29-го декабря, в стандартный и «урочный» день.

Задание: 34 35 36 37 38 39 40 41 42 43 44 45 46 H1
Группа раз
Бердин 5 - - - - - - - - - - - - 2
Голубев 3 - - - - - - - - - - - - 2
Кайкова 5 - - - - - - - - - - - - -
Клумова 3 3 - - - 3 - - - - - - - -
Кулаков 4 4 - - - - - - - - - - - 2
Лопатина 4 4 4 3 5 4 5 3 5 3 - - - 2
Лукаш 3 3 5 5 - 4 5 5 3 - - - - 2
Нефёдов - - - - - - - - - - - - - 2
Самойлов - - - - 4 4 - - - - - - - 2
Трушин 5 4 4 4 - 4 3 3 3 5 - - - 2
Группа два
Бычко - - - - - - - - - - - - - 2
Глазова 3 4 3 3 4 4 - - - - - - - 2
Грянченко - - - - - - - - - - - - - 2
Демченко 3 3 3 3 3 3 - - - - - - - 2
Зиновьев - - - - - 3 - - - - - - - 2
Киселёв 3 - - - - - - - - - - - - 2
Радько 5 5 3 - 3 3 3 - - - - - - 2
Расщупкин - - - - - - - - - - - - - 2
Тарасюк 3 - - - - - - - - - - - - 2
Фомченков - - - - - - - - - - - - - 2
Хабарова - - - - - - - - - - - - - 2
Группа три
Бронников - - - - - - - - - - - - - 2
Зинин 3 - - 3 4 4 3 3 3 - - - - 2
Кондрашина 5 3 - - 3 3 3 - 3 - - - - -
Ляхов - - - - - - - - - - - - - 2
Насыров - - - - - 3 - - - - - - - -
Никитченко 5 5 5 5 5 5 5 5 3 3 5 5 5 5
Смирнова 4 4 - - - 3 5 - - - - - - -
Фёдоров - - - - - - - - - - - - - 2
Цейтлин 5 4 4 5 5 5 5 5 5 5 5 5 5 5
Шафаревич - - - - - - - - - - - - - 2
Задание: 34 35 36 37 38 39 40 41 42 43 44 45 46 H1
Легенда: 34 — define для MxN, 35 — define@make, 36 — debug-1, 37 — debug-2, 38 — олимпиадная #1 (спиннеры раз), 39 — олимпиадная #2 (спиннеры два), 40 — олимпиадная #3 (MxN), 41 — олимпиадная #4 (вагон), 42 — олимпиадная #5 (кинотеатр), 43 — биты float, 44 — записная книжка массивом структур, 45 — записная книжка связным списком, 46 — вывод содержимого файла от конца к началу.

Задача 46

Необходимо вывести содержимое заданного файлового потока (файла в файловой системе, который, впрочем, может не быть обычным файлом) от последнего символа к первому. Работа операций fseek/ftell для указанных файлов не гарантирована.

Задача 45

Задача 44, но реализованная связным списком структур. Добавление новой записи — в любое место книжки.

Задача 44

Реализовать массивом структур записную книжку (с фиксированным ограниченным числом записей), реализующую следующие операции:

  1. распечатывание существующего содержимого;
  2. добавление записи в конец текущего содержимого;
  3. редактирование записи;
  4. удаление записи;
  5. сортировка записи по выбираемому полю.
Минимальный набор полей: имя, фамилия, телефон, возраст. Программе должно передаваться имя файла, из которого она  при запуске будет считывать содержимое записной книги, а после успешного совершения любой операции его туда сохранять.

Задача 43

Побитово распечатать содержимое числа типа float, вводимого пользователем с клавиатуры.

Задачи 38—42

Задачи 36—42 взяты со школьного тура ВсОШ, поскольку граждане её вместо одного из занятий писали, но написали достаточно посредственно, а задачи — вполне хороши. Работа за не более, чем секунду при всех значениях параметров из оговорённых диапазонах, хороший код, понимание и умение вывести все формулы — как обычно, требуются: автоматизированная система R.E.A. другого не пропустит.

Задача 37

То же, что и задача 36, но с использованием макросов (макрофункций).

Задача 36

Оснастить рекурсивный вычислитель чисел Фибоначчи средствами отладки, активируемыми при определении макропеременной DEBUG. Если макропеременная не определена, отладочная печать не должна быть включённой в финальный двоичный модуль ни в каком виде, кроме вызова функции отладочной печати (пустой в данном случае). Использовать макропеременные, не использовать макросы (макрофункции).

Задача 35

То же, что и задача 34, но с добавлением возможности задавать значения M и N в командной строке утилиты make.

Задача 34

Оснастить одну из задач по заполнению массива MxN (горизонтальной либо диагональной змейкой или улиткой) директивами «#define», задающими размерности массива. Использовать конструкцию

#if !defined(N)
#define N	11
#endif /* !defined(N) */
уметь объяснять её необходимость.