![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в массиве
selesasha © (2012-03-15 14:26:00)Дано:
1) Неубывающий массив повторяющихся данных, длинной ~15000 возможно имеющий nil среди значений, и почти наверняка имеющий хвост из nil в конце
2) Массив находится на удаленном сервере, каждый запрос одного элемента это post через http с последующим парсингом ответа. Т.е. Чтобы сравнить 2 элемента массива нужно сделать 2 запроса.
3) Функция позволяющая для пары данных однозначно определить какой из аргументов больше, или их равенство, если ни одно из них не nil
Задача:
Найти границы окна, внутри котрого находится значение заданное пользователем, за наименьшее число обращений к серверу. Найти не обязательно точно, возможна погрешность, максимальнывй размер которой задается пользователем, при этом пользователь может указать погрешность 0.
Поделитесь пожалуйста своими соображениями. Код никакой не прошу, только идеи и Ваши умные мысли.
selesasha (2012-03-15 20:19:00) [21]Jeer
Спасибо за прояснение, видимо программирование действительно не моё и мне пора отчисляться.
Если можно, просто чтобы еще раз ощутить свою ничтожность в этом мире, просьба: Я задачу описал довольно полно, если не затруднит смогли бы Вы хотябы примернопоказать как она будет выглядеть сведенная к классической?
brother (2012-03-15 20:10:00) [22]> Я студент, пытающийся угодить жене преподавателя,
способы подсказать (к программированию не имеют отношения)?
Jeer (2012-03-15 20:10:00) [23]
> Я студент, пытающийся угодить жене преподавателя, дабы посещять
> его лекции бесплатно.
1. Похвально, конечно.. но жен преподов по другому ублажают.
Впрочем, это не моя рекомендация.
2. Сведение задачи к классической, означает использование апробированных, теоретически, практически и статистически эффективных алгоритмов.
3. Неординарные ( не классические ) задачи, в основе которых лежит алогичный не системный поход, будут интересны только "я студент.."
P.S.
Ничего не имею против Вас, просто поясняю ситуацию.
brother (2012-03-15 20:07:00) [24]> Давайте не будем. Функция протестирована и работает.
Удачи!
selesasha (2012-03-15 20:00:00) [25]
> очевидно же, что Вы нанятый "самодельщик".
Я студент, пытающийся угодить жене преподавателя, дабы посещять его лекции бесплатно.
> - сведение задачи к классической;
Что я собственно и сделал в посте номер 12. Или нет?
> И кому это надо, кроме Вас ?
Вы отвечаете по существу только на вопросы, решение которых нужно не только вопрошающему? нет. Так к чему эта сентенция?
Jeer (2012-03-15 19:52:00) [26]
> Рулить хочется не мне, я всего лишь пишу программу.
Так я и не в Ваш адрес сделал намек - очевидно же, что Вы нанятый "самодельщик".
И задача названа "идиотской" не потому, что ее начал решать адекватный ей по сути индивидуум.
Ок, используем определение из ответа одного из коллег - "не классическая" задача.
Выхода из этой ситуации, как минимум, два:
- сведение задачи к классической;
- теоретические измышлизмы в поиске оптимального решения в данном конкретном случае.
Первое - уже рекомендовали.
Второе требует усилий, как теоретических, так и практических.
А, на самом деле, исходя из Вашей постановки - задача решается методом Монте-Карло :)
И кому это надо, кроме Вас ?
selesasha (2012-03-15 19:34:00) [27]Да причем тут?
Выспрашивается алгоритм. Задачу привел к тому виду, в котором она должна быть понятна, без к.л. погружения в педметную область - привел ее к классическому виду.
CRLF (2012-03-15 19:29:00) [28]ок, абстрагируйся...
selesasha (2012-03-15 19:27:00) [29]
> Скажем так, задача в такой постановке -- неклассическая.
> Постарайся привести её к классическому виду и решать хорошо
> известными способами.
Опять таки - описал в [12]
selesasha (2012-03-15 19:26:00) [30]CRLF
Читали мои посты выше?
> Отфильтруй массив, чтоб нулов не было, и ищи..
Запрос элемента массива идет через интернет, чтобы загрузить все элементы масива понабодится очень долгое время. Все это затевается чтобы время поиска сократить.
> Пока не покажешь, какой именно у тебя массив, что-то конкретное
> предлагать не получится.
Я его прекрасно описал в [12] после слов "давайте абстрагируемся до вот такого уровня:"
CRLF (2012-03-15 19:25:00) [31]
> > Не зря задача названа идиотской.
> Вы второй раз называете то, над чем я работаю идиотизмом,
> совершенно не аргуметируя. Зачем? Хотите меня обидеть -
> у Вас получилось еще в первый раз.
Скажем так, задача в такой постановке -- неклассическая. Постарайся привести её к классическому виду и решать хорошо известными способами.
CRLF (2012-03-15 19:19:00) [32]Отфильтруй массив, чтоб нулов не было, и ищи... Пока не покажешь, какой именно у тебя массив, что-то конкретное предлагать не получится.
selesasha (2012-03-15 19:01:00) [33]
> А что, не добавлять в массив нуловые значения -- не катит?
Нет, массив не мой, я его только читаю.
selesasha (2012-03-15 19:00:00) [34]Jeer
> С этого и надо начинать - корабль не мой, но порулить хочется.
Рулить хочется не мне, я всего лишь пишу программу.
> Не зря задача названа идиотской.
Я обращаюсь к Вам за помощью, значит давно сижу и думаю над оптимальным решением задачи. Вы второй раз называете то, над чем я работаю идиотизмом, совершенно не аргуметируя. Зачем?
Хотите меня обидеть - у Вас получилось еще в первый раз.
Если хотите донести до меня что программирование это не мое - так я еще учусь.
brother
> давай начнем с показа ее реализации...
Давайте не будем. Функция протестирована и работает.
Вопрос вообще не в этом.
Вопрос в том, как правильно организовать поиск в "неубывающем" массиве с "дырками", использовав наименьшее число обращений к массиву.
Раз реальная задача не прокатила, давайте абстрагируемся до вот такого уровня:
Есть массив целых одноразрядных чисел (а), такой что: а[n]<=a[n+1] при a[n]<>0 и a[n+1]<>0. Можно представить себе массив из нулей, заполненный на 3/4 случайными числами от 1 до 9, потом эти 3/4 отсортировали по возрастанию (получился неубывающий массив с хвостом из нулей), и заменили некоторые из чисел в этих 3/4 на нули.
Задача: найти границы вхождения числа 4, используя минимальное число обращений к массиву. Нули границы вхождения не ограничивают.
CRLF (2012-03-15 18:57:00) [35]А что, не добавлять в массив нуловые значения -- не катит?
brother (2012-03-15 18:23:00) [36]> Самописная функция сравнения двух переменных строкового
> типа.
давай начнем с показа ее реализации...
Jeer (2012-03-15 18:20:00) [37]
> Магазин не мой, соответственно менять ничего не могу.
С этого и надо начинать - корабль не мой, но порулить хочется.
Не зря задача названа идиотской.
selesasha (2012-03-15 18:15:00) [38]
> что за функция?
Самописная функция сравнения двух переменных строкового типа.
> а как ты думаешь?
Думаю что формализованную задачу легче понять нежели реальную.
Но давайте попробуем:
Есть интернет магазин. По запросу он может выдавать информацию о выполненных заказах. Запрос есть номер этого заказа. Номера идут по порядку . В ответе сайта содержится много информации, плюс метка времени, которая есть зашифрованная по определенным законам дата выполнения заказа. Функция занимается раскодированием этих значений,переводом их в формат TDate и сравнением.
Что нужно:
Найти пул номеров всех выполненных заказов на определенную дату.
nil`ы возникают в случае если заказ задержался на этапе оплаты или комплектования. Соответственно номер заказу присвоен, но в выполненных его еще нет.
Магазин не мой, соответственно менять ничего не могу.
brother (2012-03-15 17:50:00) [39]> Вызовется эксепшн.
что за функция?
> я написал конкретную задачу, то избавился бы от подобных
> комментариев
а как ты думаешь?
selesasha (2012-03-15 17:47:00) [40]Или если бы я написал конкретную задачу, то избавился бы от подобных комментариев?