Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.07.14;
Скачать: CL | DM;

Вниз

Не могу решить простую задачку.   Найти похожие ветки 

 
ХХХХХ   (2013-02-25 14:44) [0]

Имеется числовой массив от 1 до n.
Каждый элемент представляет собой ширину.
Т.е. 1-й элемент равен 10, значит его ширина 10 и т.д.

Дано число, в диапазоне от 0 до INFINITY.
Нужно определить к какому элементу это число будет максимально близко.

Т.е. есть массив: 10, 5, 3, 6, 50, 1, 4.
Дано число 70. Ближе всего будет к 6-тому элементу.

Не могу придумать алгоритм.


 
ХХХ   (2013-02-25 14:46) [1]

Удалено модератором


 
картман ©   (2013-02-25 14:59) [2]

Удалено модератором


 
clickmaker ©   (2013-02-25 15:04) [3]

Удалено модератором


 
Дмитрий С ©   (2013-02-25 15:07) [4]

Как бы ты решил эту задачу сам, без компьютера?


 
clickmaker ©   (2013-02-25 15:12) [5]

> Как бы ты решил эту задачу сам, без компьютера?

без компьютера он ее уже неправильно решил

> Ближе всего будет к 6-тому элементу


 
Труп Васи Доброго ©   (2013-02-25 15:45) [6]


> Нужно определить к какому элементу это число будет максимально
> близко.

Ответ здесь порылся! В определении слова [b]близко[/b].


 
БарЛог ©   (2013-02-25 16:37) [7]

ХХХХХ   (25.02.13 14:44)  

Модуль разности


 
brother ©   (2013-02-25 16:42) [8]

может к 5 элементу?


 
Дмитрий С ©   (2013-02-25 16:47) [9]


> БарЛог ©   (25.02.13 16:37) [7]
> ХХХХХ   (25.02.13 14:44)  
>
> Модуль разности

Это настолько очевидно, что кажется, что проблемы возникнут и в остальной части алгоритма (поиск наименьшей разницы)


 
ХХХХХ   (2013-02-25 17:08) [10]


> brother ©   (25.02.13 16:42) [8]
>
> может к 5 элементу?


МОжет и к 5-тому. :)


 
O'ShinW ©   (2013-02-25 17:33) [11]


> Как бы ты решил эту задачу сам, без компьютера?

+1

распиши словами


 
RWolf ©   (2013-02-25 17:33) [12]

интересно, при чём тут ширина.
может, подразумевалось, что сравниваются не числа сами по себе, а  частичные суммы ряда, если можно так выразиться?


 
O'ShinW ©   (2013-02-25 17:41) [13]

>> RWolf ©   (25.02.13 17:33) [12]
аа..
т.е. если так:
http://www.fotolink.su/v.php?id=deedea3219ef92622b7b3baff9020f29
то ответ - "4й отрезок"


 
O'ShinW ©   (2013-02-25 17:45) [14]

ну, тогда создаём второй массив, где каждый элемент = сумма ряда до него из исходного.
// (заливаем костер из чайника) :)
и задача сводится к предыдущей


 
БарЛог ©   (2013-02-25 17:47) [15]

Дмитрий С ©   (25.02.13 16:47) [9]

> Это настолько очевидно, что кажется, что проблемы возникнут и в остальной
> части алгоритма (поиск наименьшей разницы)

Автору не очевидно :)


 
brother ©   (2013-02-25 17:50) [16]

> МОжет и к 5-тому. :)

те ты даже задачу не правильно понял/ставишь?


 
ХХХХХ   (2013-02-26 21:46) [17]


>  brother ©   (25.02.13 17:50) [16]
>
> > МОжет и к 5-тому. :)
>
> те ты даже задачу не правильно понял/ставишь?


К 5. :)
Извините, чо.


 
Jeer ©   (2013-02-26 21:57) [18]

Да ладно вам - что придираетесь?

Это новый сколковец ( а может и фамилия у него Сколковец? )
Открыватель новых рядов, соискатель грантов от микрософт и вообще - душка-парень.


 
ХХХХХ   (2013-02-26 21:59) [19]

Давайте учить меня решать задачу. Хорошо?

В цикле я перебираю все элементы по индексу,
как только суммарная ширина превышает заданную выходим и запоминаем
этот элемент. Который слева.


 
ХХХХХ   (2013-02-26 22:00) [20]

А дальше как?


 
Jeer ©   (2013-02-26 22:01) [21]


> суммарная ширина


Подробнее - про ширину. Это очень всех интересует.
Обычно мужики меряются длиной, но.. допускаю варианты.


 
ХХХХХ   (2013-02-26 22:05) [22]


> Jeer ©   (26.02.13 22:01) [21]


Представьте, что каждый элемент здание.
Со своей шириной. А не длиной.
Или плитка, где тоже ширина, а не длина.


> Обычно мужики меряются длиной, но.. допускаю варианты.


А у меня стоит.
Хи-хи.


 
Jeer ©   (2013-02-26 22:07) [23]

При решении математических задач целесообразно абстрагироваться от прикладной составляющей.


 
ХХХХХ   (2013-02-26 22:10) [24]


> Jeer ©   (26.02.13 22:07) [23]


Ширина лучше звучит чем длина.
Длина это что-то вертикальное.


 
clickmaker ©   (2013-02-26 22:11) [25]

> Длина это что-то вертикальное

а высота - что-то горизонтальное, ага


 
Jeer ©   (2013-02-26 22:13) [26]


> а высота - что-то горизонтальное, ага


Как ее поставишь - тем она и будет:)


 
ХХХХХ   (2013-02-26 22:25) [27]

Сойдемся, коллеги, на ширине. :)


 
Dennis I. Komarov ©   (2013-02-26 22:29) [28]


> ХХХХХ   (26.02.13 21:46) [17]
>
> >  brother ©   (25.02.13 17:50) [16]
> >
> > > МОжет и к 5-тому. :)
> >
> > те ты даже задачу не правильно понял/ставишь?
>
>
> К 5. :)
> Извините, чо.

так 4 же


 
Pavia ©   (2013-02-26 22:40) [29]

Чего тут делать взял и написал всего 4 строчки.
function (Mas:TAReal; Value:Real):Integer;
var a:TAReal;
begin
a:=Copy(Mas);
MainOp("-",a,a,Value);
MainOp("abs",a);
Result:=MinIndex(a);
end;


 
Inovet ©   (2013-02-26 22:40) [30]

> [19] ХХХХХ   (26.02.13 21:59)
> как только суммарная ширина превышает заданную выходим и запоминаем

Суммарная? Зачем выходим, может там ещё лучше будет.


 
Pavia ©   (2013-02-26 22:44) [31]


> Давайте учить меня решать задачу. Хорошо?

Если клиент платёже способен, то можно поучить.


 
ХХХХХ   (2013-02-26 22:47) [32]

> Pavia ©   (26.02.13 22:40) [29]

Я ничего не понял.


>  Inovet ©   (26.02.13 22:40) [30]
>
> > [19] ХХХХХ   (26.02.13 21:59)
> > как только суммарная ширина превышает заданную выходим
> и запоминаем
>
> Суммарная? Зачем выходим, может там ещё лучше будет.


А как еще?
Ширина каждого задана в абсолютных координатах.
А заданное число в ... не знаю каких. :)


 
ХХХХХ   (2013-02-26 22:49) [33]


> Pavia ©   (26.02.13 22:44) [31]
>
>
> > Давайте учить меня решать задачу. Хорошо?
>
> Если клиент платёже способен, то можно поучить.


Во время учебы вы можете глумиться надо мною
и всячески обзывать. Не я такой, жизнь такая. :)


 
clickmaker ©   (2013-02-26 22:52) [34]

> Ширина каждого задана в абсолютных координатах

с каких это пор ширина задается в координатах?


 
Jeer ©   (2013-02-26 23:30) [35]


> с каких это пор ширина задается в координатах?


Ну как..
Вот надо тебе попасть в "ширину", заданную географическими координатами ее центра масс и полигоном периметра.
Ты - там, она - вон там.
И как ты без GPS-Глонасс?


 
знайка   (2013-02-26 23:34) [36]


> Глонасс
Интересно, почему не, например, глонаспус? :)


 
Jeer ©   (2013-02-26 23:39) [37]

Это - в Роскосмос.
Я-то тут при чем?


 
Труп Васи Доброго ©   (2013-02-27 11:45) [38]

Пока ты не определишься с тем, что значит "максимально близко" ничего не получится. А то смотрю уже дошли до ширины в абсолютных координатах!!!


 
БарЛог ©   (2013-02-27 11:47) [39]

рассадник флуда :(


 
Inovet ©   (2013-02-27 12:05) [40]

> [32] ХХХХХ   (26.02.13 22:47)
> > Суммарная? Зачем выходим, может там ещё лучше будет.
>
> А как еще?

Ну и при чём тут "суммарная", что это вообще означает?

> [32] ХХХХХ   (26.02.13 22:47)
> Ширина каждого задана в абсолютных координатах.
> А заданное число в ... не знаю каких. :)

Координатах на прямой?


 
ХХХХХ   (2013-02-27 13:07) [41]


> Inovet ©   (27.02.13 12:05) [40]
>
> > [32] ХХХХХ   (26.02.13 22:47)
> > > Суммарная? Зачем выходим, может там ещё лучше будет.
>
> >
> > А как еще?
>
> Ну и при чём тут "суммарная", что это вообще означает?


Смотрим 1-й элемент - ширина 10.
Смотрим 2-й элемент - ширина 5.
Смотрим 3-й элемент - ширина 40.

Нам дают число 50.

Суммарная ширина 65.

Ответ 3-й элемент.

> Координатах на прямой?

Да.


 
Inovet ©   (2013-02-27 13:09) [42]

> [41] ХХХХХ   (27.02.13 13:07)
> Суммарная ширина 65.

Показывай, как считал


 
Труп Васи Доброго ©   (2013-02-27 13:32) [43]


> Суммарная ширина

новое понятие в математике!

> Суммарная ширина 65.

новые правила в математике?


 
ХХХХХ   (2013-02-27 13:40) [44]


> Inovet ©   (27.02.13 13:09) [42]
>
> > [41] ХХХХХ   (27.02.13 13:07)
> > Суммарная ширина 65.
>
> Показывай, как считал


Опечатка.
Конечно же 55.


 
БарЛог ©   (2013-02-27 13:43) [45]

ХХХХХ   (27.02.13 13:40) [44]

> Опечатка.
> Конечно же 55.

Ногами и по лицу.


 
ХХХХХ   (2013-02-27 13:45) [46]


> Труп Васи Доброго ©   (27.02.13 13:32) [43]
>
>
> > Суммарная ширина
>
> новое понятие в математике!
>


А что же это?


 
Inovet ©   (2013-02-27 13:45) [47]

> [44] ХХХХХ   (27.02.13 13:40)
> Опечатка.
> Конечно же 55.

Так, хорошо. Значит такое решение тоже верное?

Смотрим 1-й элемент - ширина 40.
Смотрим 2-й элемент - ширина 5.
Смотрим 3-й элемент - ширина 10.

Нам дают число 50.

Суммарная ширина 55.


 
Inovet ©   (2013-02-27 13:46) [48]

> [46] ХХХХХ   (27.02.13 13:45)
> А что же это?

Ты хадачу поставил, объясни что это.


 
Труп Васи Доброго ©   (2013-02-27 13:52) [49]


> А что же это?

Да Х.Е.З. что это такое М.Т.!!! Ты это слово придумал, не я, вот и объясни что это.
Длину знаю, ширину знаю, даже периметр и площадь знаю и объём до кучи и всякие там средние значения и даже максимумы с минимумами, а вот что такое "суммарная ширина" трёх/четырёх чисел не в курсе, наверно плохо учился.


 
ХХХХХ   (2013-02-27 14:01) [50]


> Inovet ©   (27.02.13 13:46) [48]
>
> > [46] ХХХХХ   (27.02.13 13:45)
> > А что же это?
>
> Ты хадачу поставил, объясни что это.


Суммарная ширина!

Или общая ширина элементов: 1, 2, 3 и т.д.

> Так, хорошо. Значит такое решение тоже верное?

Да.


 
Jeer ©   (2013-02-27 14:18) [51]

Да это тест бота идет, только вот с какой он стороны? :)


 
Inovet ©   (2013-02-27 14:19) [52]

> [50] ХХХХХ   (27.02.13 14:01)

Дальше.
Какое решение для такого набора
10, 5, 40, 5
и числа 50?

Ответы
1. элементы 1,2,3
2. элементы 2,3,4


 
Inovet ©   (2013-02-27 14:20) [53]

> [51] Jeer ©   (27.02.13 14:18)
> Да это тест бота идет

Бот заточен на кройку и шитьё.


 
brother ©   (2013-02-27 14:21) [54]

а, я кажись понял!

max:= ...;
sum:=0;
sum2:= 0;
i:=0;
repeat
 inc(i);
 sum2:= sum;
 sum:= sum + mas[i];
until sum >= max;

if (max - sum) < (max-sum2) then
 // ближе i
else
 // ближе i-1


оно?


 
brother ©   (2013-02-27 14:29) [55]

доплонение:

if (max - sum) = (max-sum2) then
// получается буридианов осел :)
else
 if (max - sum) < (max-sum2) then
 // ближе i
 else
 // ближе i-1


 
ХХХХХ   (2013-02-27 14:30) [56]


> brother ©   (27.02.13 14:21) [54]
>
> а, я кажись понял!


Да.
Да вы Псайкер!


> Jeer ©   (27.02.13 14:18) [51]
>
> Да это тест бота идет, только вот с какой он стороны? :)


Я не бот.
Честно.


 
brother ©   (2013-02-27 14:34) [57]

* Буриданов осел


 
ХХХХХ   (2013-02-27 14:43) [58]


> brother ©   (27.02.13 14:34) [57]


Я не умру.


 
Inovet ©   (2013-02-27 14:44) [59]

> [54] brother ©   (27.02.13 14:21)
> sum:=0;
> sum2:= 0;

А почему не все возможные сочетания из i?


 
brother ©   (2013-02-27 14:45) [60]

> А почему не все возможные сочетания из i?

потому что
repeat
inc(i);


 
brother ©   (2013-02-27 14:47) [61]

> Я не умру.

я так и думал, что не так поймете. объясняю, читать как:
не

> // получается буридианов осел :)

а
* Буриданов осел
и если не понятно сие значение: гуглите! будет познавательно!)


 
Smile   (2013-02-27 14:51) [62]

> Не могу решить простую задачку

Рискну сделать предположение, что для тебя она уж не такая и простая
:)


 
ХХХХХ   (2013-02-27 14:51) [63]


> brother ©   (27.02.13 14:47) [61]
>
> > Я не умру.
>


Я же и говорю, я не умру, я выберу левую кучку вкуснятинки.
:)


 
ХХХХХ   (2013-02-27 14:53) [64]


> Smile   (27.02.13 14:51) [62]
>
> > Не могу решить простую задачку
>
> Рискну сделать предположение, что для тебя она уж не такая
> и простая
> :)


Я чую, что она простая.
Но оказалась сложной.
Вот такой вот ещё один парадокс в треде.

А вообще, элементы - это строка.
Каждый элемент - буква, со своей шириной.

И я ищу, куда поставить каретку, при клике на самописный EDIT.

Такие дела. :)


 
brother ©   (2013-02-27 14:54) [65]

> Я же и говорю, я не умру, я выберу левую кучку вкуснятинки.

а!)


 
Inovet ©   (2013-02-27 14:58) [66]

> [60] brother ©   (27.02.13 14:45)
> > А почему не все возможные сочетания из i?
>
> потому что
> repeat
> inc(i);

Это не все сочетания.


 
brother ©   (2013-02-27 15:01) [67]

лично, я понял, что они идут по порядку, создавая в сумме общую, нарастающую) ширину)


 
Inovet ©   (2013-02-27 15:04) [68]

> [67] brother ©   (27.02.13 15:01)
> лично, я понял, что они идут по порядку, создавая в сумме
> общую, нарастающую) ширину)

Ну так автор это прояснил в 64 посте, после вытягивания клещами.


 
ХХХХХ   (2013-02-27 15:06) [69]


> Inovet ©   (27.02.13 15:04) [68]
>
> > [67] brother ©   (27.02.13 15:01)
> > лично, я понял, что они идут по порядку, создавая в сумме
> > общую, нарастающую) ширину)
>
> Ну так автор это прояснил в 64 посте, после вытягивания
> клещами.


Вообще-то тут про массив было.


 
brother ©   (2013-02-27 15:11) [70]

> Ну так автор это прояснил в 64 посте,

об этом я начал догадываться после [41] ))))))


 
ХХХХХ   (2013-02-27 15:15) [71]

Удалено модератором


 
brother ©   (2013-02-27 15:16) [72]

Удалено модератором


 
ХХХХХ   (2013-02-27 15:22) [73]

Удалено модератором


 
brother ©   (2013-02-27 15:24) [74]

Удалено модератором


 
ХХХХХ   (2013-02-27 15:26) [75]

Удалено модератором


 
Очень злой   (2013-02-28 00:06) [76]

Удалено модератором


 
ХХХХХ   (2013-02-28 00:24) [77]

Удалено модератором


 
ХХХХХ   (2013-02-28 00:27) [78]

Удалено модератором


 
DevilDevil ©   (2013-02-28 09:22) [79]

я просто - то так
а если огромный массив и нужно постоянно в нём искать - есть метод быстрее )

function (Mas: TAReal; Value: Real): Integer;
var
 i: integer;
 BestDelta, Delta: Real;
begin
 Result := 0;
 BestDelta := abs(Mass[0]-Value);

 for i := 1 to Length(Mas)-1 do
 begin
   Delta := abs(Mass[i]-Value);
   
   if (Delta < BestDelta)  then
   begin
     Result := i;
     BestDelta := Delta;
   end;
 end;
end;


 
Труп Васи Доброго ©   (2013-02-28 09:50) [80]


> а если огромный массив и нужно постоянно в нём искать

Тогда массив в БД, сортировка по возрастанию, выбор первого элемента, меньшего, чем твоё число и предыдушего (большего) элемента. Выбор из этих двух путём сравнения  модулей разности -> "щастье"!



Страницы: 1 2 вся ветка

Текущий архив: 2013.07.14;
Скачать: CL | DM;

Наверх




Память: 0.66 MB
Время: 0.009 c
15-1361608048
oldman
2013-02-23 12:27
2013.07.14
Кстати, с праздником, мужики!


15-1361977811
zekk3r
2013-02-27 19:10
2013.07.14
после перезагрузки программа не работает


2-1353028451
Abcdef123
2012-11-16 05:14
2013.07.14
как контролировать ShortCut клавиши?


1-1310467860
lesstab
2011-07-12 14:51
2013.07.14
Фрейм: как обрабатывать его закрытие и открытие


15-1360858297
alexdn
2013-02-14 20:11
2013.07.14
Мозг как процессор