TonitaN / FormalLanguageTheory

Slides and tasks for theory of formal languages course BMSTU IU9 (comments&issues in Russian)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Лабораторная 2

TonitaN opened this issue · comments

Здесь пишем, кто кого выбирает в напарники.
Правом голоса наделены:

  • 51Б: Андреева, Булкин, Дужеева, Киселев, Куйвашев, Окутин, Перов, Поршенко, Слесарев и авансом: Богданов
  • 52Б: Алексеев, Василовская, Гасаев, Кабанов, Марченко, Федоров, Задворных, и авансом: Швец, Донченко, Потребина

Здесь же можно писать, кто хочет ощутить абсолютную власть получить право ревьюить код препода и ещё и получать баллы за это - правда, это работает в две стороны, и самим писать код тоже придётся. Базово плюсы, знание рефала и латеха приветствуется.

(ИУ9-51Б) Слесарев Данила, Вячеслав Локшин

Беру в пару Задворных

ИУ9-51Б Поршенко Егор, Токарев Иван

Здесь же можно писать, кто хочет ощутить абсолютную власть получить право ревьюить код препода и ещё и получать баллы за это - правда, это работает в две стороны, и самим писать код тоже придётся. Базово плюсы, знание рефала и латеха приветствуется.

Все вопросы про Чиполлино можно задавать участникам проекта:
OnionGrief/Chipollino#203
@mathhyyn Терентьева Анна - vk.com/aannnna t.me/terentyeva
@xendalm Дельман Александр - vk.com/xendalm t.me/xendalm

Участие в проекте будет засчитываться как лабораторная, активное участие - награждаться рекомендацией к доп баллам.
Обсудим задачи, дедлайны и "наставников".
Задачи разные - от рабского труда монотонного переписывания или тестирования и до написания отдельных алгоритмов.
(Обращение за подробностями ни к чему не обязывает)

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

ИУ9-52Б Василовская Дарья, Потребина Валерия

Беру в пару Афанасьева Илью

ИУ9-5(1|2)Б
Окутин Денис
Гасаев Гамид

ИУ9-51Б
Булкин Владимир (Вариант)
Перов Степан

commented

ИУ9-51Б
Куйвашев
Богданов

Не всех успела проверить, но к списку имеющих право голоса добавляются по факту сдачи лабораторной вчера: Ольга Александрова, Илья Алёшин, Мадина Балтаева, Екатерина Маслова (и ещё двое, кто уже выбран, поэтому их нет смысла тут перечислять). Определяемся до 12 дня понедельника, и я анонсирую остальные группы.

ИУ9-52Б
Кабанов (вариант)
Федоров

ИУ9-52Б
Швец
Марченко

ИУ9-52Б
Балтаева Мадина, Аркадий Шевыров

ИУ9-51Б
Илья Алешин
Александр Новак

ИУ9-51Б
Дужеева
Андреева

ИУ9-5(1|2)Б
Александрова
Гнатенко

ИУ9-52Б
Донченко
Кежаев

Оставшиеся пары 51Б:

  • Банников + Панков
  • Гречко + Митрошкин
  • Евдокимов + Исоев
  • Камаев + Савин
  • Нечитайлова + Петросян
  • Старовойтов + Якушев (им повезло: по остаточному принципу два нечётных варианта, могут выбрать один из двух)
  • Шилова + Усанов

Оставшиеся пары 52Б:

  • Виленский + Мельников
  • Выдрина + Караник
  • Глушенкова + Джабаров
  • Жакия + Терюхов
  • Ключник + Маслова
  • Наумов + Ованнисян
  • Панкратов + Царукян
  • Садиков + Сатыбалдиев

Здесь было ровно по вариантам.

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

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

Кое-кто уже заранее объявил личный Game Over по тфя. Для тех, кто оказался напарником "сдавшихся", дедлайн будет продлён на неделю, но постарайтесь разобраться, кто выжил, и переформировать группы с учётом этого.

P.S. - В крайнем случае, будет одиночка, с сокращённым вариантом лабы. Но лучше, чтобы одиночка был именно один, а не трое из разных групп.

"Мифический человеко-месяц" в действии: большинству, похоже, пришлась по душе индивидуальная работа. Что ж, чуть-чуть поменяем правила игры (добавим степени свободы):

  • за хорошую командную работу (активное совместное тестирование) будет начислен гарантированный +1 балл. И раздача бонусов продляется на одну неделю, а если кто-то помнит, то там есть +1 балл за чистоту решения. Это компенсирует штраф за просрочку на неделю тем, кто сейчас думает, сдавать недотестированную работу или подождать напарника, но поощрит на 1 балл тех, кто закончит всё в срок (в отличие от просто продлённого дедлайна).
  • вы можете сдать свою часть отдельно и получить баллы по факту дня сдачи. Но ваш напарник при этом получает штраф -1 балл по умолчанию. И если вы сдаётесь в одиночку, и я нахожу слишком серьёзные баги (сломанная логика, а не какие-то детали парсера или крайние случаи), то я отказываюсь принимать вашу часть до приёма общей работы, и ваша репутация падает на 10 баллов.

Если вы меняетесь напарниками без уведомления, это -25 баллов к репутации (и ещё -75 баллов, если меняете себе вариант). Чтобы поменяться, необходимо:

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

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

P.S. - Для тех, кто хочет поменяться, но не может получить согласия, есть ещё один выход. Делать свои части "как бы" по отдельности, и если так и не дождутся отклика, сдавать как одиночки. Потому что совместной работы, скорее всего, в этом случае тоже дождаться не получится. А если согласие от них будет - вы уже не по нулям будете стартовать. Исключение - те, кто меняется не только напарниками, но и вариантами, в силу нехватки по чётности (@uma-op, это про вас). Там тоже можно такое осуществить, но уже с потерей репутации в случае неуспеха обмена, либо делать строго свой вариант, не надеясь на обмен.

Хотим поменяться так:

Напарник Вариант Напарник Вариант Новый вариант
Старовойтов 1 Банников 3 1
Камаев 2 Шилова 3 2
Савин 2 Якушев 2 2
Ключник 3 Наумов 3 3
Панков 3 Маслова 3 3
Усанов 3 Ованнисян 3 3

От Усанова ждем подтверждения после четверга (комиссия по ДГМА)

EDIT от Nepeivoda: Изменения принимаются, ваше бесстрашие меня восхищает.

От Усанова ждем подтверждения после четверга (комиссия по ДГМА)

Это похоже на сообщение о возможном результате комиссии. Ок, ждём подтверждения остальных (Савин, Маслова, Ованнисян, Камаев, Шилова; Ключник с Наумовым - те исключения, кого я имела возможность спросить лично).

В варианте с SSNF по дефолту НЕ НУЖНЫ ПРОИЗВОДНЫЕ БРЗОЗОВСКИ! (но если вы их уже сделали, то придумайте, как использовать для упрощения, и я начислю +2, а то и больше)

Там просто упрощаем и собираем регулярку из дерева обратно. Результат передаётся модулю тестирования. Переход к автомату в этом варианте - только в модуле тестирования для построения тестового набора строк. И там достаточно банального Глушкова.

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

У кого Golang/Rust и вариант с SSNF - для тестов производительности регулярок возьмите вызов Python-библиотеки, если Golang ничего не покажет (а скорее всего, на Golang разницы вы не заметите).
Вот именно в этом варианте максимально в тему библиотека регексов С++ (кто уже закончил лабу, тот знает, почему), но кажется, на плюсах никто как раз SSNF и не пишет.

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

Баллы первопроходцам:

  • @OkDenAl @wizardOfOz21 (lookahead)

  • @Kabane-UN @GarryNeKasparov, @SanyakaMLG , @Sarahdeep , @adderallbaby (шаффлы)

  • одинокий волк @Blackdeer1524 (SSNF)

  • "Душа девяточки" - @GarryNeKasparov (Парсер по лекции Александра Владимировича с Рефал-Семинара, причём позапрошлого - что может быть более скрепно для иу9?!), но несколько других хороших парсеров (включая первопроходцев из других вариантов) тоже получают по +1

  • С генерацией случайных регулярок задача оказалась на удивление непроходимой: почти все использовали очень сильные неявные предположения, сильно сужающие параметры генерации. Да ещё и внезапная эпидемия фазз-тестирования ровно на одной строке, практически сводящая на нет смысл тестирующего модуля. Я, конечно, заметила, что в нескольких группах работа была распределена по принципу "основную часть лабы - тому кто тащит, фазз-модуль - тому, кто едет". К счастью, были и исключения, у которых пусть получилось не всё, но хотя бы многое.

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

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

Я всё ещё жду "Алексей and Георгий solutions", чтобы наконец раздать дополнительные баллы за самые эффективные решения (нет, их работа в это число вряд ли войдёт, но зато я надеюсь, что остальная группа смотивирует их доделать дебаг).

И народ, если уж вы взяли за образец чужую ЛР, рекомендую поинтересоваться у "образцовых студентов" (или их менторов, которые также делали ревью на их труды), что я им сказала по поводу их лабораторной. Очень вероятно, я скажу вам то же самое, если вы слепо скопируете алгоритм, да ещё и поставлю в карму хороший минус, если ошибки в реализации уж очень знакомые и совсем на поверхности.

Вариант 0, 1, 3, 9 - призовые баллы

  • Задворных + Алексеев +3
  • Кабанов + Федоров +1
  • Куйвашев +2
  • Донченко +2 Кежаев +1

У остальных либо экспоненциально взрывающиеся регулярки, либо всё ещё баги.

Вариант 6, 7, 8 - призовые баллы

  • Марченко + Швец +2
  • Гасаев + Окутин +2
  • Афанасьев + Киселев +2
  • Потребина + Василовская +1

Вариант 2, 4, 5 - призовые баллы

  • Дужеева + Андреева +3
  • Поршенко +1

Остальные запутались в упрощении альтернатив.