mipt-cs / course-site-python3 Goto Github PK
View Code? Open in Web Editor NEWСайт курса
Сайт курса
фракталы с черепашкой
Проблема: задача может иметь тесты разной ценности. Может быть "блочность" задачи: за частичное решение хочется давать не около нуля, а 20-30-50% от всех баллов за задачу и т.д. Например, если существует решение для n<100 и решение для n<1000. Хочется давать немного баллов и тем, кто смог только написать простое решение.
Идея:
Дать способ задавать вес каждого теста и вес общего бонуса.
В самом контесте пусть задается суммарная стоимость задачи.
После делается так:
S - суммарная стоимость, W - суммарный вес (все тесты и бонус), w_i - вес i-ого теста, b_i - баллы за i-ый тест
b_i = int(S/W * w_i) (округление вниз!)
а в бонус отправить остаток
Кажется, такое будет надежно работать и не падать. В самых крайних случаях (слишком мелкая стоимость отдельных тестов) за тесты будет 0 баллов, а в бонус будет уходить всё :-)
Это можно починить специальным if'ом.
По умолчанию я бы сделал так: 30% бонус, остальное равномерно между всеми тестами.
Задача 9:
Ребятам было не очевидно, что:
Задача 15:
Просто не поняли что делать, пришлось объяснять.
Текущий вариант плох как минимум по следующим причинам:
При старте в клетке 1,1 робот не видит стены сверху и может "шагнуть" вверх.
При этом отрисовывается шаг движения вверх, робот фактически остаётся в той же клетке, а сам после этого становится невидимым до конца выполнения программы...
При ударе робота о стену он становится красным, но продолжает движение.
Текущий способ постановки задач заключается в прописывании их в файл с исходниками робота, что не комильфо.
Страница, на которой нужные нам ссылки:
http://mcsp.wartburg.edu/zelle/python/
В этой работе мы пишем функции без возвращаемого значения ("процедуры").
Темы:
Хотелось бы это дать по типу того, как Илья Рудольфович даёт школьникам Тупого Художника.
Т.е. обучить студентов не только созданию функций, но и проектированию "сверху-вниз".
Контест: перевод графа из одной формы в другую, поиск в ширину и глубину, поиск кратчайшего пути.
Ответственный: Маркеева
Критик: Хайруллин
Задача: сформировать требования к контесту.
При ударе робота о стену он становится красным, но продолжает движение.
Point нелогично складывать.
Надо сделать Vector.
При старте в клетке 1,1 робот не видит стены сверху и может "шагнуть" вверх.
При этом отрисовывается шаг движения вверх, робот фактически остаётся в той же клетке, а сам после этого становится невидимым до конца выполнения программы...
Сюда входят все пройденные ранее виды сортировок, включая быстрые:
вставками.
выбором.
методом пузырька.
подсчётом.
Поразрядная.
Быстрая
Доброго времени суток!
Заметил парочку опечаток в уроке №2 ("Введение в Python 3"):
В главе "IPython — расширенная оболочка": в коде строка "ABC" умножается на 10, а в поясняющем тексте ниже сказано, что строка умножается на 100;
В упражнении №8 в условии перепутаны ввод и вывод.
В дальнейшем предлагаю собирать всю информацию об опечатках здесь.
Лабораторная работа: Консольные утилиты
Она является работой №16 прошлого года
Требуется вычитать работу и сделать её более интересной.
Лабораторная работа: Словари и множества в Python
Она является работой №10 прошлого года
Требуется:
Вычитать и модернизировать работу "Графы Фрутландии"
текст 2015-2016-го года: http://judge.mipt.ru/mipt_cs_on_python3_2015/labs/lab20.html
исходник 2015-2016-го года: https://github.com/mipt-cs-on-python3/course-site/blob/master/content-2015-2016/lab20.rst
Основа этой работы: Визуализация графов при помощи библиотеки NetworkX.
Алгоритмические темы полностью повторяют два последних контеста, а именно:
плюс связанные с ними алгоритмы
Важно, чтобы студенты могли делать подсвечивание подграфа (например, построенного остовного дерева или найденного цикла). Это делается полупрозрачной широкой линией при построенном заранее layout.
Нужно переименовать работу, потому что её текущее название никак не соответствует сути.
Было бы неплохо отображать, как именно робот должен двигаться (например, записать gif-ки с решениями). Это нужно сделать для тех задач, где наличие подобной анимации не будет облегчать поиск решения.
Нужно сделать произвольную глубину боковых коридоров, чтоб не было соблазна решать без цикла.
Явно указать, что под вспомогательным алгоритмом понимается функция, рисующая часть узора.
Сделать генерацию коридора в произвольных местах.
Сделать генерацию стены в разных местах.
Сделать генерацию коридора в разных местах.
Контест: перевод графа из одной формы в другую, поиск в ширину и глубину, поиск кратчайшего пути.
Ответственный: Маркеева
Критик: Хайруллин
Задание:
Есть три подходящих задачи в контесте: http://judge2.vdi.mipt.ru/cgi-bin/new-client?contest_id=540203
Первые две оттуда брать нельзя - они войдут в домашний контест ко 2-й лекции.
Нужно сделать задачи:
Как выкладываем промежуточный результат:
заливаете
условие задачи,
образцовое решение
генератор тестов ( или сами тесты )
чекер
короткое описание каждой задачи в текстовичке Markdown, содержащее кусочек конфига для этой задачи
в папку 2_03_lab
в репозиторий: https://github.com/mipt-cs-on-python3/contests/tree/master/2016-2017_python3
Вот здесь можно посмотреть как я делаю генератор тестов:
https://github.com/mipt-cs-on-python3/contests/tree/master/2016-2017_python3/2_02_lab
В первой из задачек (A_dic1) можно посмотреть на нестандартный чекер — checker.py
Условия Ejudge принимает в xml виде. Пока я оставил statements как есть.
@fufler Хотелось бы придумать rst, который будет легко переводить в xml скриптом.
Дедлайн передачи критику : 20:00 19.02.17
Дедлайн согласований с критиком: 20:00 20.02.17
Слишком халявен, оба вопроса, фактически, про одно и тоже.
Внимание! Лабораторная работа "Строки и списки" делается из куска работы 5 прошлого года.
и дополняется по усмотрению.
Темы работы:
Цикл упражнений к практической работе можно оставить, но продумав, что из этого по материалу и по сложности подходит к данной работе.
Контест: поиск в ширину, поиск кратчайшего пути.
Ответственный: Семенцов-Огиевский
Критик: Хламов
Дедлайн передачи критику: 20:00 22 февраля
Дедлайн передачи в общий доступ: 20:00 24 февраля
Лабораторная работа: Арифметика и статистика
Она является частью работы №5 прошлого года. Добавить разумных и интересных упражнений.
Темы работы:
В задаче не очевидно, что нужно искать уникальные числа. В не то что 1 2 3 3 3 должен вывести 3, 2, 1, а не 3,3,3
Нужно срочно выложить ответы к упражнениям сегодняшней работы!
Иначе мы потеряем интерес студентов. Пока ещё эта работа "на острие", нужно успеть выложить ответы, тогда они их просмотрят.
Нужно вычитать, вычистить и сделать адекватной по объёму (чтобы успели за пару) работу №11 прошлого года (теперь она №10):
Содержание старой работы:
Я предлагаю сделать так:
1 часть работы:
2 часть работы:
Нужна ссылка на документацию по функциям, ибо студентам не понятно, зачем нужно писать именно такие аргументы и какие еще варианты аргументов есть у этой функции.
Т.е. должен находиться по УКАЗАННЫМ ссылкам ответ на вопрос "почему 50 и что такое normed и в каком диапазоне его можно задавать)
n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)
В условии не хватает упоминания о том, что система может быть не десятичной.
Контест: двоичные дервья поиска
Ответственный: Семенцов-Огиевский
Задачи можно смотреть тут: https://server.179.ru/tasks/python/2017b1/pgm32__Graphs-1.html
и тут (для Си): http://93.175.29.65/cgi-bin/new-client?contest_id=600009
Нужно актуализировать и улучшить работу №8 прошлого года (теперь она №11):
Цель данной работы: дать первичные навыки командной работы с использованием git.
План старой работы:
Проектирование программы
Командное программирование
Легенда
Разбиение на модули
Распределение ролей
Программист А. План работ
Программист В. План работ
Результаты
Пример солечной системы
Пример двойной звезды
Дополнительное задание
>>> class MySecondClass:
msg = 'Hello' # Все экземпляры этого класса будут иметь атрибут msg,
# равный "Hello"
# Но впоследствии мы его можем изменить
def doSmth(self):
return self.msg
>>> b = MySecondClass()
>>> b.doSmth()
'Hello'
>>> MySecondClass.doSmth(b)
'Hello'
>>> b.msg = 'Good by'
>>> b.doSmth()
'Good by'
В этом листинге описание немного не соответствует действительному положению дел.
msg = 'Hello'
- атрибут уровня класса.
b.msg = 'Good by'
- создает атрибут msg у экземпляра b
Атрибут уровня класса по-прежнему доступен и остался прежним:
»> MySecondClass.msg
'Hello'
>>> MySecondClass.__dict__
{'msg': 'Hello', '__weakref__': <attribute '__weakref__' of 'MySecondClass' objects>, '__module__': '__main__', '__doc__': None, '__dict__': <attribute '__dict__' of 'MySecondClass' objects>, 'doSmth': <function MySecondClass.doSmth at 0x7fe3c3d47840>}
>>> b.__dict__
{'msg': 'Good by'}
Путаница между двумя разными уровнями аттрибутов может быть вызвана тем, что внутри класса можно обращаться к ним обоим через self. Вначале происходит поиск в аттрибутах экземпляра (b.__dict__
), а затем среди аттрибутов класса (MySecondClass.__dict__
).
Введение
Ветвление
Цикл while
Цикл for
Операторы сравнения
Команды Робота.
Коридорные задачи.
Лесенка для робота.
Вложенные циклы: сложные коридоры
В прошлом семестре речь шла в основном о сортировках.
Нужно дополнить это пониманием ассимптотики разных встроенных операций, например list.pop(0)
Сделать вкладку "Достижения учащихся" с результатами контрольных работ
Генератор я закоммитил в корень: quiz_results_generate.py
Задачи для контеста шестой недели:
Задача B в контрольной 3 совпадает с задачей A в контрольной 4.
Переписать исполнителя Робот так, чтобы он тебе нравился.
При этом команды робота должны быть:
up()
down()
left()
right()
paint()
без упоминания объекта робота.
Набор задач тебе сбросить в каком формате? Есть редактор карт для робота на КуМир-е.
Где и в каком формате ты будешь хранить задачи и ответы?
Лабораторная работа: Черепашка
Вычитать и доделать лабораторную работу: Максим Хламов
Приёмку работы делает Алексей Ермаков
В тесте 12 где на ввод подается 100к чисел, какое решение, предполагалось, должны написать студенты, чтобы не получить 'T' таймаут? Использовать set студенты еще не могут, так как он, очевидно, проходится в семинаре 10 ("Словари и множества в Python"), про бинарный поиск вроде им тоже ни чего не говорили, делать костыли и подпираться под тест - вроде не красиво. Может я что-то упустил?
В лабе после задания 5 нигде явно не сказано, что входные данные подаются через файл, хотя, судя по контенту лабы, это подразумевается.
Хорошо бы показывать как именно роботу нужно ходить.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.