|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
||||||
Пишу программу составления школьных расписаний на Лисп, уже на первом этапе возникли трудности11.08.2021, 00:15. Показов 4921. Ответов 36
Здравствуйте, пишу в качестве выпускного проекта программу составления расписаний на Лиспе, при этом испытываю большие сложности с самого начала, в голове практически пусто.
Начать решил с функции проверки расписания на корректность, при этом само расписание представил так:
Каждый день - тоже список. И содержит он ряд описаний уроков. Описание урока (какая неожиданность) - и на этот раз список. Первым в нем идет строка с названием предмета, дальше имя учителя и в конце номер аудитории. В каждом классе дни начинаются с одного и того-же, и уроки каждый день с одного и того-же. Вся эта мишура списков - суть есть таблица, и для проверки нужно проверить, не ведут ли учителя уроки у разных классов или не занят ли один кабинет сразу несколькими классами. С чего мне начать? Если бы у всех классов каждый день было одно и тоже количество уроков, было бы проще (тут напрашивается мысль про выравнивание).
0
|
||||||
| 11.08.2021, 00:15 | |
|
Ответы с готовыми решениями:
36
программа составления расписания школьных занятий Возникли трудности |
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
||
| 15.08.2021, 15:47 [ТС] | ||
|
0
|
||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 15.08.2021, 16:10 | |
|
А, ну это укладывается в мой "фреймворк": с точки зрения методических дней, добавленный урок ломает расписание, если после добавления у учителя, ведущего этот урок, заняты все дни.
0
|
|
|
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 503
|
||
| 16.08.2021, 18:28 | ||
|
Учитывая, что с 1 по 3 класс все предметы ведет классный руководитель. В 4-5 классе не физики и химии. Так же нужно учитывать приоритет следования предметов от сложных до не очень. Сначала математика, в конце физкультура. Все это можно реализовать в правилах на списках. Топикастер не указал минимальный набор входных данных: - список учителей - предметников - количество часов по каждому предмету за определенный срок - список доступных аудиторий - ограничения по количеству уроков в день Сложность задачи даже на курсовую работу не тянет, ИМХО.
0
|
||
|
Заблокирован
|
||
| 16.08.2021, 23:45 | ||
![]() "Задача теории расписаний в общей ее постановке считается весьма привлекательной, хотя достижение даже небольшого прогресса на пути к решению связано, как правило, с огромными трудностями. Несмотря на то, что задачами теории расписаний занимались многие весьма квалифицированные специалисты, до сих пор никому не удалось получить сколько-нибудь существенных результатов. Безуспешные попытки получения таких результатов, как правило, не публикуются и это отчасти обуславливает тот факт, что задача продолжает привлекать внимание многих исследователей кажущейся простотой постановки." (с) Лично я вижу сразу проблемы от которых бросает в дрожь) Первая - это множественность критериев проверки, при условии, что если какой-то критерий не удовлетворяет необходимым условиям, то всё расписание придётся переделывать. Втрое - это сложность самого мероприятия. Допустим, вы проверили 7 уроков и у вас всё сходиться, но на восьмом возникает ошибка, что ломает всё расписание. Вам нужно переделать расписание, а для этого вам нужно опять начать проверку с нуля, при этом нужно как-то хранить данные о тех событиях, которые привели к ошибке и учитывать их в последующем процессе изменении расписания. Если для вас это так просто, то опишите, пожалуйста, хотя бы приблизительный алгоритм решения. Мне будет интересно почитать.
1
|
||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 17.08.2021, 00:37 | |||
|
0
|
|||
|
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 503
|
||
| 17.08.2021, 10:33 | ||
|
Не уверен что, то нужно, где-то близко. Надо подумать. Задача о рюкзаке Это интересно https://habr.com/ru/post/222577/
0
|
||
|
Заблокирован
|
|||
| 17.08.2021, 10:51 | |||
|
Ну вот смотрите. Мария Ивановна ведёт литературу во Вторник в 302 аудитории третьей парой, а Николай Петрович ведёт в это же время там физику. Нужно переместить куда-то один урок, при этом всём расписание может сдвигаться и то, что было правильно и верно ранее, теперь может сломаться.
0
|
|||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 17.08.2021, 14:36 | ||
|
Пусть для 1 "А" расписание составлено, и во вторник в 302 аудитории третьей парой у него стоит литература. В процессе - составление расписания для 1 "Б". Очередная незаполненная клетка - как раз вторник. Очередной неиспользованный урок 1 "Б" - физика, аудитория 302. Заполняем клетку. Проверка расписания: универсальный валидатор говорит "не пойдёт", потому что ему валидатор аудиторий сказал "не пойдёт". Откатываем физику, следующий неиспользованный урок - химия, аудитория 303. Проходит валидацию, заполняем клетку, двигаемся дальше. Если же физика была последним неиспользованным уроком, мы в тупике. Тогда надо откатить предыдущий урок 1 "Б" и попробовать заменить его на очередной неиспользованный, т. е. на физику. И т. п. Я не знаю, зачем расписываю поиск в глубину, алгоритм стандартный. Вершинами графа являются корректные частичные расписания, стрелка из вершины А в вершину Б означает, что Б получено из А заполнением очередной клетки. Очевидно, не каждое корректное частичное расписание можно продолжить до корректного полного расписания. По сравнению с рандомом поиск в глубину позволяет сразу отбрасывать кучи вариантов, в которых ошибку можно задетектить достаточно рано. Но остаётся всё равно очень много. Пусть не каждый раз приходится начинать сначала, но иногда надо будет откатывать и до начала, и вообще - много-много откатывать. Учитывая, что клеток в расписании сотни, и мерещатся факториалы. Поэтому единственная надежда - на чудо, что корректное расписание попадётся быстро. То есть если между некорретными расписаниями в принципе раскидано много корректных. Потому что я подозреваю, что оценка времени на обход всего графа (или там половины, или десятой части), как это обычно бывает, на порядки превосходит возраст Вселенной. Из эмоционального блога некоего Пиликова я понял, что автоматическое составление расписаний усеяно фейлами. Значит, чуда не происходит. А что вы говорите, похоже как раз на изобретение хитрого алгоритма, как я его называю. Точнее сказать - умного. Исследовательская задача, голова начинает болеть ещё до того, как это себе представишь. Тут я, конечно, пас. Вторая надежда - что в рамках учебной задачи расписание может быть игрушечным. Но это надо с "заказчиком" всё обговаривать.
1
|
||
|
Заблокирован
|
||||
| 17.08.2021, 16:10 | ||||
|
1
|
||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 17.08.2021, 16:22 | |||
|
расписание валидно, если: - в одновременно несколько уроков не проходят в одном кабинете - одновременно учитель не ведёт несколько уроков - в один день (или не в один день) три одинаковых урока не могут идти подряд и ещё что угодно. Пока я не вижу ничего, кроме логических функций. Они могут иметь любую природу. Можно, например, персональные предпочтения директора туда добавить. Для тупых алгоритмов типа поиска в глубину, которые ничего не знают о валидаторах, число валидаторов несущественно. Хардкодить их не надо. Грубо говоря, собрать любые нужные валидаторы в один список и проверять (loop for validator in *validators* always (valid-partial-timetable-p partial-timetable validator). Я это называю не "топорно", а "гибко".
0
|
|||
|
Заблокирован
|
|||
| 17.08.2021, 16:43 | |||
|
0
|
|||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||
| 17.08.2021, 17:00 | |||
|
Конечно, может быть, что придётся откатиться назад, а потом ещё назад, и ещё, и до самого корня - пустого расписания, и неоднократно. И что? Вы пытаетесь меня убедить, что поиск в глубину отменили? Я максимум могу рассказать, как организовать поиск по графу, не утонув в кададрах. А работать, по моим ощущениям, будет в двух случаях: игрушечное расписание или чудо. Упирается в размер графа частичных расписаний.
0
|
|||
|
Заблокирован
|
|
| 17.08.2021, 17:04 | |
|
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 17.08.2021, 17:28 | |
|
Не могу не согласиться.
То есть как обычно: простой и неэффективный алгоритм написать легко, но он (скорее всего) не впишется в приемлемые ограничения по времени. А сложный - поди придумай. С другой стороны, это и не наша задача. Это пускай в университетах голову ломают.
0
|
|
|
164 / 144 / 10
Регистрация: 21.10.2012
Сообщений: 503
|
|||
| 17.08.2021, 20:49 | |||
|
Согласен - хороший алгоритм - победит. Делал числа фибоначи - питон обоганал Си в несколько раз. Си - рекурсися ---- питон - умножение матриц. Алгоритм.
0
|
|||
|
1070 / 991 / 153
Регистрация: 10.08.2015
Сообщений: 5,442
|
|||
| 22.08.2021, 21:48 | |||
|
Добавлено через 3 минуты какой стыд
0
|
|||
|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
|
| 22.08.2021, 23:43 [ТС] | |
|
0
|
|
| 22.08.2021, 23:43 | |
|
Возникли трудности с задачей Возникли трудности с функцией! Возникли трудности с задачками JDK возникли трудности
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|