Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в массиве


Страницы:   1 2 3

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]

Или если бы я написал конкретную задачу, то избавился бы от подобных комментариев?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо