|
Автор канал по Лиспу
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
|
||||||
Пишу программу составления школьных расписаний на Лисп, уже на первом этапе возникли трудности11.08.2021, 00:15. Показов 4935. Ответов 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,443
|
|||
| 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 возникли трудности
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|