![]() |
|
|
![]()
|
|
| kjf03 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.7.2010 Репутация: нет Всего: нет |
Доброе время суток.
Исходные данные: - робот в цикле обходит периодически точки (от 1 до N; обход должен быть 1->2->..->N->1->2->..->N->1->..); - началом нового периода считается точка №1; Необходимо подсчитать количество ошибок в периоде (1->2->..->N) допущенные роботом. Ошибкой в периоде считать: - пропущена точка; - нарушена последовательность (1->2->3->5->4->6->7->8 в данной последовательности 5 и 4 считать нарушением последовательности, то есть необходимо учитывать восстановление последовательности). Замечанием в периоде считать: - посещение точки более 1 раза, каждое лишнее посещение замечание. Подскажите как лучше реализовать алгоритм анализа обхода точек робота? |
|||
|
||||
| nworm |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
Как-то так или усложнить этот код. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Недоопределённое условие.
Пример: 1->2->3->5->4->5->6->7->8 Это может трактоваться и как только лишнее посещение, и как нарушение последовательности плюс лишнее посещение. Пока не будет абсолютной строгости формулировки задания - не будет и решения. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| kjf03 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.7.2010 Репутация: нет Всего: нет |
ошибки и замечания независимо друг от друга считаются. В реализации nworm не реализован подсчет замечаний. |
|||
|
||||
| kjf03 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.7.2010 Репутация: нет Всего: нет |
Замечанием в периоде считать:
- посещение точки более 1 раза, причем подряд- это замечание. При посещении точки повторно, но не подряд - это ошибка. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Думай, потом пиши... Повторяю. 1->2->3->5->4->5->6->7->8 Вариант 1 - базовая последовательность 1->2->3->5->4->5->6->7->8. Ошибка нарушения последовательности есть. Вариант 2 - базовая последовательность 1->2->3->5->4->5->6->7->8. Ошибка нарушения последовательности отсутствует. Иными словами - одна и та же входная последовательность допускает два различных, но полностью соответствующих условию результата. А этого быть не должно. Это сообщение отредактировал(а) Akina - 7.8.2010, 21:51 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| kjf03 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 18.7.2010 Репутация: нет Всего: нет |
Вариант 1 - базовая последовательность 1->2->3->5->4->5->6->7->8. Ошибка нарушения последовательности есть. Вариант 2 - базовая последовательность 1->2->3->5->4->5->6->7->8. Ошибка нарушения последовательности отсутствует. 1->2->3->5->4->5->6->7->8 ^ ^ ^ | | |_ошибка повторное посещения точки (если бы было 3->5->5->4->5->6, то вторая 5 трактовалась как замечание) | |_ ошибки нет, восстановление последовательности. |_ошибка - нарушение последовательности. Ошибкой в периоде считать: - пропущена точка; - нарушена последовательность (1->2->3->5->4->6->7->8 в данной последовательности 5 и 4 считать нарушением последовательности, то есть необходимо учитывать восстановление последовательности); - повторное посещение точки, при условии что предыдущая точка отлична от текущей; - восстановление последовательности возможно при выполнении следующего условия: номер точки восстановления последовательности, должен быть больше последнего номера точки до нарушения последовательности. Замечанием в периоде считать: - посещение точки более 1 раза, при условии что предыдущая точка идентична текущей. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Иными словами, базовая последовательность состоит из ПЕРВЫХ посещений каждой точки.
Тогда ошибки пропуска и замечания повторного посещения определяются в ходе (пропуск - по завершении) сортировки подсчётом, а ошибки нарушения последовательности - сравнением базовой последовательности с эталонной. Я бы предложил двухпроходный алгоритм - на первом проходе определяются и ВЫБРАСЫВАЮТСЯ из последовательности замечания повтора, на втором проходе по очищенной последовательности - выявляются ошибки нарушения последовательности, а по завершении любого из проходов - получается список ошибок пропуска. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |