Задания по программированию для 2025a

44. Интересное не про програмирование.

Нерешённые задачи элементарной геометрии.

Видео 20-летней давности, примерно про те же задачи.

Окружности и параболы. Разное.

43. Графы (обход в глубину, DFS)

Вход в контест (контест 184)

Условия задач.

Критерии: A-C,F-H (1/2/4) дата сдачи: 01.12.2024

Критерии: D,E,I-K (1/2/3) дата сдачи: 13.12.2024

42. Графы (вступление)

Вход в контест (контест 183)

Условия задач.

Критерии: задачи A-F (2/3/5), дата сдачи: 22.11.2024

41. Структуры данных (стек, очередь, дек)

Вход в контест (контест 182)

Условия задач.

Критерии: A-K (3/5/7), дата сдачи: 25.09.2024

40. Вращение освещаемого многогранника в трёхмерном пространстве

Инструкция

Полезные картинки (с нумерацией вершин, координатами вершин) многогранников.

39. Решение задач

Вход в контест (решение задач) (контест 180)

38. Вычислительная геометрия

Вход в контест (контест 181)

Справочник по элементарной вычислительной геометрии.

Условия задач.

Критерии: задачи A-F (2/4/6), дата сдачи: 13.02.2024

Критерии: задачи G-K (2/3/5), дата сдачи: 20.02.2024

Критерии: задачи L-M (1/1/2), дата сдачи: 05.03.2024 (тройка ставится, если в решении любой из задач используется вещественная арифметика)

Критерии: задачи N-W (4/6/8 из которых обязательно V), дата сдачи: 09.04.2024

Критерии: задачи X-ZN (6/8/11 из которых обязательны ZJ, ZK), дата сдачи: 23.04.2024

37. Динамическое программирование

Вход в контест (контест 179)

Условия задач. Во всех задачах обязательно писать комментарий с описанием того, что хранится в массиве (массивах), использующихся в "динамике" (см. пример).

Критерии: задачи A-D (2/3/4), дата сдачи: 09.01.2024

Критерии: задачи E-I (2/3/4), дата сдачи: 16.01.2024

За решение задач J, K, L – отдельные оценки.

Критерии: задачи M-R (2/3/4), дата сдачи: 31.01.2024

За решение задач S, T, U – отдельные оценки.

36. Решение задач: разные темы

Вход в контест (контест 178)

Условия внутри контеста (ссылка "Statement" или "Условия"), вопросы по условиям задач можно задавать в контесте.

35. Игра Letter-Boxed

Правила игры и что надо сделать.

До 19.12.2023 прислать (tg, почта) программу, которая умеет решать игру для длины слов не менее 4 и длины последовательности слов не более 5.

34. Рекурсивный перебор

Вход в контест (контест 177)

Условия задач.

Критерии: задачи A, C, E, F, G, R, любая из JKLM (2/4/6), дата сдачи: 31.10.2023

Прежде чем приступать к решению задачи Letter-Boxed очень полезно написать программу для задачи перебора всех позиций ферзей, не бьющих друг друга на квадратной доске.

33. Бинарный (двоичный) поиск

Вход в контест (контест 173)

Условия задач.

Критерии: Задачи A-F (3/4/5), дата сдачи: 28.09.2023

Критерии: Задачи G-M (2/3/4), дата сдачи: 28.09.2023

33. Решение задач

Вход в контест (решение задач) (контест 175)

ОГЭ по информатике

Тем, кто собирается сдавать ОГЭ по информатике предлагаю изучить демонстрационнный вариант.

Вариант задания (pdf, 747 KB), файлы для выполнения заданий 11-14 (zip, 87.6 MB).


Инструкция по использованию:

Правила проведения экзамена: ссылка

Сайт с официальными материалами.

32. Решение задач: массивы и рекурсия

Вход в контест (решение задач: массивы и рекурсия) (контест 174)

31. Новая игра

Правила игры и полезная информация

Файл содержит описание игры и то, что от вас ожидается. Файл получен из pdf прибавлением к каждому байту единицы по модулю 256.

Разберитесь, как устроено чтение и запись бинарных (binary) файлов. Напишите программу, которая восстанавливает pdf-файл и выполните задание.

Обратите внимание, что в файле две страницы. Имеет смысл посмотреть сразу обе.

Несколько заданий на первой странице не надо никуда сдавать и присылать. Они нужны вам для того, чтобы "пощупать" основную задачу и попробовать придумать свою оригинальную стратегию игры.

До 18 мая надо написать первую стратегию, которая способна играть и почти никогда не проигрывать заведомо нелогичному игроку.

Пример программы, которая "играет" стратегиями Т.е. управляет раздачей, контролирует перебор, передаёт корректные параметры в каждую играющую стратегию.

Почитать про случайность и алгоритмы: В.А. Успенский "Четыре алгоритмических лица случайности"

30. Игра "Быки и коровы"

Правила игры и полезная информация

К 13.04.2023 напишите базовые версии обеих вариантов игры. Лучше в двух разных файлах.

29. Классы (рациональные числа)

Вход в контест (контест 172)

Условия задач.

Критерии: Задачи A-F (3/4/6), дата сдачи: 09.03.2023 21:59:59

Критерии: Задачи G-M (3/4/5), дата сдачи: 23.03.2023 21:59:59

Пример нулевой задачи с методом __str__ и заготовками конструктора и перегрузки (overload) арифметических операций.

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

(для кругозора) John Horton Conway, разное

John Horton Conway, Look-and-Say последовательность (осторожно, спойлеры!).

28. Перебор (без рекурсии)

Вход в контест (контест 171)

Условия задач.

Критерии (часть 1, задачи A-E) 2/3/5, дата сдачи: 02.02.2023 21:59:59

Пример решения задачи A.
Обратите внимание — код самой программы для многих задач почти не меняется. Цикл, перебирающий последовательности один и тот же, только функции find() и next() разные.

Критерии (часть 2, задачи F-H) 1/2/3, дата сдачи: 09.02.2023 21:59:59

Критерии (часть 3, задачи I-M) 1/2/3, дата сдачи: 16.02.2023 21:59:59

Критерии (часть 4, задачи N-Q) 1/2/3, дата сдачи: 23.02.2023 21:59:59

Дополнительно (часть 5, задачи R-W), хорошие оценки за решения с комментариями, дата сдачи: когда угодно

27. Морской бой

Вход в контест (контест 170)

Условия задач.

Критерии: 5/10/12, дата сдачи: 25.01.2023 21:59:59

26. Нетранзитивные игры: Penney game

Правила игры и что писать.

25. Решение задач: функции, функции, функции

Вход в контест (python) (контест 168)

Тексты программ для скачивания: A, B, C, D, E

Вход в контест (cpp) (контест 169)

Тексты программ для скачивания: A, B, C, D, E

Как можно смотреть содержимое сложных структур данных.

Для этого есть библиотека pprint (Pretty Printing). Она входит в стандартный комплект при инсталляции Python. В этой библиотеке есть одноимённая функция (pprint). Использовать её очень просто:

from pprint import pprint

# пусть у вас есть словарь d, достаточно большой и в одну строчку при обычном print всё не влезает
pprint(d)

24. Частотный анализ английского текста

Скачайте файлы: Инструкция
Решение (copy/paste вашего кода) сдавать сюда (контест 167).
За работу будет две оценки: за сделанное на уроке и за доделанное к вечеру 04.12.2022.

23. Решение задач: строки, файлы, сортировка, множества

Вход в контест (контест 166)

22. Множества, словари

Вход в контест по множествам и словарям (контест 165)

Условия задач.

Критерии: часть 1 (A-J) 3/5/8, дата сдачи: 23:59:59 23.10.2022

Критерии: часть 2 (K-Z) 5/9/12, дата сдачи: 23:59:59 27.11.2022

21. Использование сортировки, встроенная сортировка

Вход в контест по сортировкам (контест 163)

Условия задач.

Критерии: часть 1 (A-J) 3/5/8, дата сдачи: 23:59:59 29.09.2022

Критерии: часть 2 (K-U) 3/5/8, дата сдачи: 23:59:59 23.10.2022 (обратите внимание — срок сдачи по второй части продлён).

20. Вспомнить всё.

Вход в контест (контест 164)

Условия задач.

Критерии следующие: 3/4/5, дата сдачи: 23:59:59 14.09.2022

19. Выигрыватель в Wordle

Код написанный на уроке.

18. List comprehension (генераторы массивов)

Вход в контест по массивам (пишем коротко) (контест 162)

Условия задач.

Критерии следующие:

3/5/8, дата сдачи: 24.05.2022 23:59:59

17. Прикручиваем генерацию комбинаторных объектов к игре nerdle

Изучите пример кода, разберитесь что выводят и как работают обе функции.

Используйте идею для генерации всех арифметических выражений.

16. Слова, числа, операции...

Напишите одну из игр:

Если вы написали игру, в которую понятно как играть, пришлите по почте файл с программой Михаилу Эдуардовичу и Роману Валерьевичу.

Письмо должно быть выслано обоим адресатам. Файл с программой должен быть приложен к письму.

Только 5-буквенные слова из Wordle (eng) (74 kB)

Существительные (eng) (54 kB)

Все слова (eng) (4750 kB)

15. Самостоятельная работа (19.04.2022)

Вход в контест (контест 154)

14. Вещественная арифметика

Вход в контест по вещественной арифметике (контест 161)

Условия задач.

Критерии следующие:

задачи A-J, 4/6/8, дата сдачи: 12.04.2022 23:59:59

задачи K-R, 3/5/8, дата сдачи: 19.04.2022 23:59:59

13. Двумерные массивы

Вход в контест по двумерным массивам (контест 160)

Условия задач.

Критерии следующие (обновлено!): 9/14/18, дата сдачи: 05.04.2022 23:59:59

12. Рекурсия

Вход в контест по рекурсии (контест 159)

Условия задач.

Критерии следующие: 5/7/10, дата сдачи: 22.02.2022 23:59:59

Материалы online-урока 01.02.2022:

Ученики ФТШ (сейчас)

Ученики ФТШ (за все годы)

Программа, вычисляющая год, в который было больше всего выпускников.

Заготовка программы для кодирования шифром Цезаря

11. Работа с файлами

Вход в контест по файлам (контест 153)

Условия задач.

Задач сдаются в два этапа. Критерии следующие:

Задачи A-L: 5/6/9, дата сдачи: 01.02.2022 23:59:59

Задачи M-X: 4/6/8, дата сдачи: 08.02.2022 23:59:59

10. КР по циклам

Вход в контест (контест 155)

9. Сортировки (продолжение)

Вход в контест по сортировкам (контест 158)

Условия задач. На этой неделе вам предлагается решать только задачи I, J.

Критерии следующие: J/I,J/I,J (чисто сделанные)

Поскольку времени неделя, а задач две (одна из которых очень подробно разбиралась в течение 30 минут), то мы поэкспериментируем с форматом оценивания.

Дата сдачи: 23:59:59 19.01.2022

8. Сортировки

Вход в контест по сортировкам (контест 158)

Условия задач. Пока вам предлагается решать только задачи A-E.

Критерии следующие: 2/3/5

Дата сдачи: 23:59:59 12.01.2022

7. Массивы

Вход в контест по массивам (контест 151)

Условия задач

Критерии следующие: 5/7/10

Дата сдачи (1 часть, задачи A-M): 23:59:59 23.12.2021

Пример кода, иллюстрирующего разницу во времени работы методов insert и append. Полезно подумать, что и как там работает, вы уже почти всё знаете. А можно просто запустить.

6.5. Задачи из пройденных тем, для ознакомления с тестирующей системой

Этот контест не на оценку! Это просто милые задачи, не только из контестов, которые вы уже решали на informatics.mccme.ru.

Вход в контест "Вспомнить всё" (контест 150)

Условия задач

Для общего развития (1)

Обзорное видео, посвящённое клеточным автоматам. Самый известный клеточный автомат — игру "Жизнь" придумал американский математик Джон Конвей, про которого вообще полезно почитать.

6. Строки и циклы

Вход в контест по строкам.

Критерии следующие: 5/7/10

Дата сдачи: 23:59:59 08.12.2021

Разные замечания:

5. Функции

Вход в контест по функциям.

Критерии следующие: 5/7/10

Дата сдачи: 23:59:59 25.11.2021 продлено до 23:59:59 27.11.2021

Разные замечания:

4. Задание на строки, срезы и методы строк

Вход в контест по строкам.

ВНИМАНИЕ: во всех задачах этого контеста нельзя использовать циклы. Также обращайте внимание на ограничения, указанные в условии некоторых задач, например запрет на использование метода count.

Если вы сделали задачу, она прошла все тесты, но вместо статуса OK вы сейчас видите "Ошибка оформления кода", это означает, что вы:

Критерии следующие: 5/9/11

Дата сдачи: 23:59:59 18.11.2021

Документация по методам строк

3. Задание по циклу while

Вот.

Критерии следующие: 6/9/12

Дата сдачи: 23:59:59 11.11.2021

2. Задание по условному оператору и циклу for

Вход в контест по if и for.

Критерии следующие: 5/7/10 из задач A-L (условный оператор) и 2/3/6 из задач M-S (цикл for)

Дата сдачи: 23:59:59 27.10.2021

С жутким опозданием и извинениями выкладываем "секретный" способ прочитать несколько (на самом деле совершенно неважно сколько именно) целых чисел, записанных в одну строку через пробел.

Например, в задаче про прямоугольники (задача I) это делается так:

x1, y1, x2, y2, x3, y3, x4, y4 = map(int, input().split())

В левой части вы просто перечисляете имена переменных, а часть справа от оператора присваивания всегда одна и та же, и не зависит от количества переменных.

1. Задание по целочисленной арифметике

Вход в контест по целочисленной арифметике.

Внимание! Все задачи решаются только с использованием ввода/вывода и целочисленных операций +, -, *, //, % и **. Решения, нарушающие это ограничение, приниматься не будут.

Критерии следующие: 6/9/14 задач на 3/4/5 соответственно. Дата сдачи: 23:59:59 14.10.2021 (то есть у вас есть пара в школе, чтобы порешать и позадавать вопросы и время дома).

Тестирующая система и вердикты

Описание вердиктов тестирующей системы

Что ставить и в чём писать программы

Для установки Python и сред программирования (выбирайте нужный вариант для вашей версии операционной системы):

Тепреь программы, которые рекомендуется использовать для набора программ на Python.

VS Code и SublimeText используются не только для набора программ на Python, но и на большинстве современных языков программирования. Преимущество VS Code в том, что он бесплатный. Оба имеют кучу настроек всего чего угодно, при этом есть хорошая документация. Не говоря о том, что ответы на большинство вопросов получаются поиском.

IDLE — это стандартный редактор, поставляемый вместе с Python. Простенький, но надёжный.

Все среды программирования (VS Code, PyCharm, SublimeText и Thonny) умеют запускать код "внутри себя". Но это требует некоторой настройки этой среды.

Вне зависимости от того, в каком редакторе вы пишете текст программы на Python, вы всегда можете запустить её в консоли (на Маке - в терминале) при помощи команды вида

"путь_к_python.exe\python.exe путь_к_вашему_файлу_с_программой\ваш_файл_с_программой"

Например, так:

c:\Python37\python.exe c:\prog\01-int\G.py

Если вы сможете настроить пути для запуска Python из текущей папки, где находится ваша программа, запускать можно будет так:

python G.py

Способ запуска в консоли это самый непосредственный способ "общения" с интерпретатором, без посредников. Если при запуске программы произошла ошибка, её текст будет показан в консоли.

При работе внутри среды программирования может сложиться ситуация, когда вам не показывают ошибку, просто сообщая, что "программа упала". Поиск ошибок в такой ситуации может оказаться трудной задачей, особенно для новичков. Скорее всего, среду можно настроить так, чтобы все ошибки показывались, но это ещё надо сделать.

Мощная и настраиваемая среда программирования полезна, когда мы работаете с большим проектом из многих файлов/модулей/библиотек, используете системы контроля версий и прочие промышленные концепции.

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

Тестовое задание

Вход в контест.

Домашнее задание по системам счисления (сдать на листочке)

Домашнее задание по системам счисления.

Домашнее задание номер 2 по булевой алгебре (на листочке)

1) Рассмотрим ваш номер мобильного телефона без кода города. Рассмотрим булеву функцию f(a, b, c) со следующей таблицей истинности:

abcf(a, b, c)
0000
001остаток 1-й цифры вашего телефона по модулю 2
010остаток 2-й цифры вашего телефона по модулю 2
011остаток 3-й цифры вашего телефона по модулю 2
100остаток 4-й цифры вашего телефона по модулю 2
101остаток 5-й цифры вашего телефона по модулю 2
110остаток 6-й цифры вашего телефона по модулю 2
111остаток 7-й цифры вашего телефона по модулю 2

Запишите эту таблицу истинности на листочек, и запишите функцию f(a, b, c) в виде как можно более короткой формулы, используя любые пройденные нами операторы.

2) Изучите эту таблицу истинности пяти функций f0, f1, f2, f3, f4:

abf0(a, b)f1(a, b)f2(a, b)f3(a, b)f4(a, b)
0000000
0100001
1000110
1101010

Поймите, что теоретически можно выписать всего 16 разных булевых фунций, от f0 до f15. Сделайте очень широкую таблицу истинности, в которую запишите таким образом все 16 возможных функций.

После этого запишите каждую из 16 функций в виде как можно более короткой формулы, используя любые пройденные нами операторы.

Например, f3(a, b) = a.

Домашнее задание по булевой алгебре (на листочке)

Домашнее задание по булевой алгебре.