Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2013, 17:10   #1
Aleks_006
Пользователь
 
Регистрация: 19.03.2013
Сообщений: 23
По умолчанию Сверхдикая задача про роботов

Здравствуйте, мне дали довольно странную итоговую задачу, помогите разобраться хотя бы, что там от меня требуется?

"Давно, в самом начале развития робототехники, компания X представила первые модели роботов. Роботы могли двигаться по прямой либо вперёд, либо назад. Поэтому в качестве испытательного стенда был выбран бесконечный коридор, в котором находится M выходов. В коридоре расположено N роботов, каждый из которых может двигаться с некоторой постоянной скоростью V(i) вдоль коридора (i=1..n). Цель каждого робота - достичь ближайшего выхода, чтобы покинуть коридор. Роботы передвигаются оптимально и могут обгонять друг друга, не сталкиваясь.
Нужно написать программу, определяющую номер робота, который раньше всех выйдет из коридора (если их несколько, то нужно определить всех).
Входные данные:
В первой строке входного файла записаны два числа N и M (1<=N, M<=1000) - количество роботов и выходов соответственно. Далее следуют N строк, содержащих по два числа, разделённых пробелом. В первой - координаты и скорость 1-го робота, в последней - координаты выходов. Все координаты и скорости - натуральные числа, не превосходящие 10^9.
Выходные данные:
В первой строке вывести число S - количество роботов, которые раньше всех покинут коридор, во второй - их номера (можно в произвольном порядке)."

На файлы пока наплевать, я не могу понять сам процесс решения задачи: с чего мне вообще начать? нужно представить её себе графически, или что? каким образом представить вообще эти выходы? представить движение? как координаты могут быть одним целым числом?!
Возможно, я её даже смогу решить, если пойму, с чего начать.
Aleks_006 вне форума Ответить с цитированием
Старый 19.03.2013, 17:44   #2
Jugger
Пользователь
 
Регистрация: 30.01.2008
Сообщений: 99
По умолчанию

Одномерный коридор, координата соответственно одно число
Наверное нужно моделировать движение роботов вычисляя их координату через какой то небольшой промежуток времени, потом сравнивать с координатой выхода - если совпадет робот выходит
Jugger вне форума Ответить с цитированием
Старый 19.03.2013, 17:56   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А что тут моделировать? Есть начальные координаты и скорость каждого робота, а так же координаты выходов. Для каждого робота вычислить ближайший выход и время на перемещение до него. Из полученных N времен выбрать минимальное (-ые) и результат с номером робота на экран или в файл
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.03.2013, 17:57   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Задача обхода лабиринта. Можно решать через графы, но лучше, лабиринт представить в виде массива. Например "стены" обозначить отрицательными числами, "дорожки" - нулями, а выходы - числами большими, чем количество роботов. Номера роботов, соответственно - меньше.
Цитата:
как координаты могут быть одним целым числом?!
Координаты каждого робота, это индексы массива. Например X[100][100].
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.03.2013, 18:00   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Задача обхода лабиринта
Какой лабиринт? Просто коридор без начала и конца. И робот прётся к ближайшему выходу
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.03.2013, 18:17   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Какой лабиринт? Просто коридор без начала и конца. И робот прётся к ближайшему выходу
Точно, я чёт пропустил этот пунктик. Ну, тогда вообще всё просто.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.03.2013, 18:27   #7
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Цитата:
Ну, тогда вообще всё просто.
Тогда может быть объясните мне, а то что-то не пойму.
1)Вот смотрите, в условии задачи дан корридор с M выходов, а сами координаты выходов, судя по входным данным, не известны. Как быть?
2)"В первой строке вывести число S - количество роботов, которые раньше всех покинут коридор". А это как понимать? Что означает раньше остальных? Если каждый из 10 роботов придёт на секунду позже предыдущего, то кто из них будут считаться пришедшими раньшими?

Последний раз редактировалось Kix.IV; 19.03.2013 в 18:29.
Kix.IV вне форума Ответить с цитированием
Старый 19.03.2013, 18:35   #8
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Kix.IV Посмотреть сообщение
Тогда может быть объясните мне, а то что-то не пойму.
1)Вот смотрите в условии задачи дан корридор с M выходов, а сами координаты выходов, судя по входным данным, не известны. Как быть?
Координаты выходов, задаёте сами или случайным образом в стенах коридора.
Цитата:
2)"В первой строке вывести число S - количество роботов, которые раньше всех покинут коридор". А это как понимать? Что означает раньше остальных? Если каждый из 10 роботов придёт на секунду позже предыдущего, то кто из них будут считаться пришедшими раньшими?
У вас будут не секунды, а шаги цикла, которые можно приравнять к значению 1секунда. На каждом шаге цикла, делается проверка положения всех роботов и определяется, кто из них достиг выхода.
Если хоть один достиг, - выход из цикла. Если не достиг, делаем следующий шаг.
Но, если это всё-же не лабирнт, то можно вычислить и иначе. Как написал Аватар, просто сравнить координаты роботов и блищайших к ним выходов. Какой из них окажется ближе - тот и "выиграл".
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 19.03.2013 в 18:38.
Smitt&Wesson вне форума Ответить с цитированием
Старый 19.03.2013, 18:56   #9
Kix.IV
Участник клуба
 
Регистрация: 11.08.2012
Сообщений: 1,226
По умолчанию

Цитата:
Координаты выходов, задаёте сами или случайным образом в стенах коридора.
Цитата:
Если хоть один достиг, - выход из цикла.
Значит условия задачи были не верно записаны? Ну тогда всё действительно просто.
Kix.IV вне форума Ответить с цитированием
Старый 19.03.2013, 19:55   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
В первой строке входного файла записаны два числа N и M (1<=N, M<=1000) - количество роботов и выходов соответственно.
Цитата:
Далее следуют N строк, содержащих по два числа, разделённых пробелом.
Цитата:
В первой - координаты и скорость 1-го робота
Следует понимать в первой группе из N строк. По строке на робота. Не?
Цитата:
в последней - координаты выходов
Тут неувязка. Скорее всего следует понимать в последней группе из M строк. Не?
Цитата:
У вас будут не секунды, а шаги цикла, которые можно приравнять к значению 1секунда
Какие циклы? Делим расстояние до ближайшеего выхода на скорость - получаем время. Направление движения робот выбирает до ближайшего выхода, поскольку условие задачи не оговаривает иного. Встречного столкновения роботов не предусмотрено, поскольку они могут разминуться при обгоне
Цитата:
кто из них будут считаться пришедшими раньшими
Один или несколько с наименьшим временем. Наименьшее может совпасть у нескольких
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.03.2013 в 20:01.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программы на заказ Builder c++/Visual c++/Дельфи/php. Разработка торговых роботов Miller-1981 Фриланс 0 12.12.2012 17:24
Задача про графы nic-nic Помощь студентам 1 11.10.2012 20:24
Задача про файлы Fmk Помощь студентам 0 17.05.2012 19:16
Услуги по созданию торговых роботов AgentSmit Фриланс 0 04.01.2012 18:09
Программы на заказ Delphi/Builder c++/Visual c++ , для SEO/накрутки просмотров, торговых роботов. Miller-1981 Фриланс 0 08.02.2011 23:15