|
|
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
По логическим способностям я гуманитарий, в алгоритмике - очень плохо. Был на одном собеседовании - успешно провалил. На память осталась интересная задача. Верблюд выращивает и продает бананы. Выращивает в одном месте, продает - на базаре за 1к км. Вырастил 3 тысячи бананов. За 1 км движения съедает по одному банану (что в одну, что в другую сторону). За раз может унести 1к бананов. Нужно принести на рынок максимальное количество для продажи. Как сделать? Если прямиком идти - то все по дороге и съест, и на обратный путь не останется. Додумался, что нужно путь делить на n отрезков и от одного к другому переносить по 1к бананов, пока не доберешься до рынка: от начала до отрезка 1 перенес 1к бананов, затем вернулся, взял еще 1к и перенес к отрезку 1 и тд. Чувствую, что нужно определить максимальное количество отрезков при котором верблюд принесет на рынок максимальное количество бананов, т.е. взаимосвязь такая... На этом благополучно и стопорюсь - мозг просто "пробуксовывать" начинает. Отсюда 2 вопроса: 1. Такая "пробуксовка" - это нормально? А то я уже долго над этой проблемой комплексую и чуть ли не мрт мозга делать собрался, чтоб посмотреть - может у меня аномалия какая. Не смешно. 2. Помогите решить, чтоб я смог процесс понять - без кода, на уровне математики (кажется, тут алгебра). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:07 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Кантачес, логический ответ: автору задачи надо провериться у психиатра. ЗЫ. Напрашивается ответ: перетаскивать все 3 кучки поочерёдно по 1 км, но уж больно простой он - наверное, где-то есть подвох ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:17 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
1к км, это одна тысяча км? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:20 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
tanglirперетаскивать все 3 кучки поочерёдно по 1 км, но уж больно простой он - наверное, где-то есть подвох так только на передвижение понадобится 5000 бананов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:21 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
1) за 3 подхода перенести все бананы на 200м. На передвижение потратится как раз 1000 бананов (3 раза туда и 2 обратно) 2) за 2 подхода перенести все оставшиеся бананы на 333.(3) метра. Опять потратим 1000 бананов (2 раза туда и 1 обратно) 3) Оставшуюся тыщу бананов отнести до рынка. Потратится 466.(6) бананов, остальное продадим. Смысл - как можно скорее уменьшать количество тысяч бананов (и как следствие - количество переходов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:29 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
под метрами имелись в виду км ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:32 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
КантачесПо логическим способностям я гуманитарий, в алгоритмике - очень плохо. Был на одном собеседовании - успешно провалил. На память осталась интересная задача. Верблюд выращивает и продает бананы. Выращивает в одном месте, продает - на базаре за 1к км. Вырастил 3 тысячи бананов. За 1 км движения съедает по одному банану (что в одну, что в другую сторону). За раз может унести 1к бананов. Нужно принести на рынок максимальное количество для продажи. Как сделать? Если прямиком идти - то все по дороге и съест, и на обратный путь не останется. Додумался, что нужно путь делить на n отрезков и от одного к другому переносить по 1к бананов, пока не доберешься до рынка: от начала до отрезка 1 перенес 1к бананов, затем вернулся, взял еще 1к и перенес к отрезку 1 и тд. Чувствую, что нужно определить максимальное количество отрезков при котором верблюд принесет на рынок максимальное количество бананов, т.е. взаимосвязь такая... На этом благополучно и стопорюсь - мозг просто "пробуксовывать" начинает. Отсюда 2 вопроса: 1. Такая "пробуксовка" - это нормально? А то я уже долго над этой проблемой комплексую и чуть ли не мрт мозга делать собрался, чтоб посмотреть - может у меня аномалия какая. Не смешно. 2. Помогите решить, чтоб я смог процесс понять - без кода, на уровне математики (кажется, тут алгебра).Не алгебра. Задачу можно решать разными способами, это скорее вопрос общей методологии решения подобных задач. Где-то в архивах "Кванта" была статья на эту тему. Например, начнём с конца: верблюд вернулся домой и съел последний банан. Вообще, с рынка верблюд, видимо, шёл без разворотов. Экономичней всего, если на каждом километре он при этом подбирал по банану (потому что доставка бананов от дома чем дальше, тем дороже по накладным расходам, а воров в пустыне нет). Теперь переметнёмся к началу: вот он взял бананы и пошёл. Взял, видимо, максимум; по дороге выкладывает бананы на обратный путь; в какой-то момент кладёт оставшееся и возвращается домой за второй порцией. Потом он возьмёт её, дойдёт (положим) дотуда же, вернётся, возьмёт третью порцию, и от промежуточной точки (в которой будет лежать не больше 2000 бананов) тем же манером в два приёма сходит до базара. Или до второй промежуточной точки, в которой в итоге будет не более 1000 бананов и от которой до базара он дойдёт уже за раз. Много времени было на решение задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 13:38 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
tanglirКантачес, логический ответ: автору задачи надо провериться у психиатра. ЗЫ. Напрашивается ответ: перетаскивать все 3 кучки поочерёдно по 1 км, но уж больно простой он - наверное, где-то есть подвох Не, задача прикольная. Про подвох не знаю, но один из интервьюеров сказал, что вариантов решения несколько. pirovindos, да. Яростный Меч, предложенный вами вариант как раз был похож на тот, что предложили в качестве ответа. Интервьюировали сразу человек 7-8, смотрели на работу в команде. По 1ске:) Abstraction, не помню, может минут 5. Алгоритм в коде реализовывать не нужно было, просто на бумаге представить последовательность действий для решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 14:06 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Кантачес, Интересно. Задача, похоже, не так проста. Если посчитать, то предложенным мной способом верблюд уйдёт на 1000/6 + 1000/4 + 1000/2 = 916 км. То есть, чтобы не погибнуть голодной смертью, ему придётся развернуться, не дойдя до базара. С другой стороны, если разматывать задачу "от базара", это похоже на правильный ответ: посмотрим, насколько далеко верблюд сможет дойти с заданным количеством бананов. Отрезок, по которому он проходит 2 раза, не может быть длиннее 500 км; отрезок, по которому он проходит 4 раза, бессмысленно делать длиннее 250 км, так как на это расстояние он сможет перенести не больше 1000 бананов; то же для большего числа "проходов". Таким образом, если у нас N тысяч бананов, максимум мы уйдём на 500*(1+1/2+...+1/N). Выводы: на рынке продать при 3000 бананов ничего не получится, первый проданный банан мы имеем при начальном запасе 3667 бананов, при сколь угодно большом числе бананов рынок может быть сколь угодно далеко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 14:23 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Кантачес, кстати, а надо предусмотреть бананы для обратного пути? а то мой вариант - если только дойти до рынка и продать, а дальше "хоть трава не расти" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 14:30 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Abstraction, либо там было оговорено, что обратный путь от рынка после продажи бананов не считается - тут, к сожалению, не помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 14:33 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Заклеить рот верблюду. Всё просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 15:09 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Заодно и задницу заклеить, дабы замедлить отвод дерьма и переваривание жратвы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 16:25 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Кантачес, Какова грузоподъемность у верблюда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 16:27 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Александр ПузаковКантачес, Какова грузоподъемность у верблюда? А, все, нашел... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 16:29 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Э-э-х, технари. С вашим подходом готовы всё прожрать и сгноить, т.к. пока будете туда сюда ходить бананы сгниют. Подход манагера. Найти того, кто довезёт всё и побыстрее. И уломать при этом на наименьшую цену. Кантачес, вы какой-то не правильный гуманитарий. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 19:51 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
3000-5*200=2000 2000-3*200=1400 1400-3*200=800 бананов. а уже 600 метров еще 400 бананов и он на рынке итого 400 бананов на продажу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 20:27 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Дмитрий 777итого 400 бананов на продажу"маловато будет" (с) у меня ( 12952201 ) 533 получилось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 21:53 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Классически такая задача формулируется как транспортная - машина должна из имеющегося запаса бензина доставить макс. кол-во в указанную точку (вариант - уехать максимально далеко). Код: sql 1. дал верный ответ (обычно, правда, такая задача предполагает целочисленное решение, в этом случае на базар будет доставлено 533 банана). То, что оно верное - можно доказать. Строгое доказательство, полагаю, существует, я дам не совсем строгое, а так, основу. Условие "доставить макс. кол-во на базар" эквивалентно (почти - без учёта того, что ради увеличения доставки можно кое-что бросить посередь пути) условию "использовать мин. количество на питание по дороге". Исходно у нас 3000 бананов. Т.к. грузоподъёмность составляет 1000, то из исходной точки придётся выходить трижды. Запомним это. Собственно алгоритм движений одинаков - берём по максимуму, идём до некоей точки, разгружаемся по максимуму, возвращаемся к точке, где ещё есть бананы... ну кроме последнего рывка, само собой. При этом получается, что движение вперёд - полезное, назад - паразитное (растёт расход на питание в пути!). Более того, чем дальше мы идём вперёд на очередной стадии (когда сзади ещё остались бананы, за которыми надо вернуться), тем больше эти паразитные расходы. К тому же минимизация количества этих "маятниковых" хождений тоже благотворно скажется на результате. (вот тут - отступление от строгости, доказательство, что первые два хождения должны быть равны, сложновато, примем это как постулат) Когда верблюд добредёт третий раз до точки первого сброса, он должен прикончить первую тысячу бананов, чтобы на след. стадии уменьшить количество челночков с 3 до 2. Соответственно он прошёл расстояние до первой точки сброса 5 раз, т.е. она располагается на 1000/5=200 км. Аналогично просчитывается положение второй точки сброса - в 1000/3 км от первой. И как итог - 533 банана на базаре. Кстати, довольно забавно было скормить эту задачу Экселевому солверу. Подробно расписать движение верблюда, учесть, что на горбу, что на земле, что съедено, понаставить ограничений (всё целое, всё от 0 до 1000, ещё кое-какие ограничения одних цифирей по сравнению с другими...) и попросить максимизировать итог. Решение даётся почти мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2012, 22:01 |
|
||
|
Логическая задачка: верблюд продает бананы.
|
|||
|---|---|---|---|
|
#18+
Я бы решал так: переместить в одну сторону 3000 бананов стоит 5 бананов/км так как мы двигаемся 3 раза в одну сторону и один раз в другую (перемещать бананы верблюд может как на 200 км так и на 1 км - это абсолютно не важно, лучше перемещать бананы на 1 метр и возвращаться, чтобы постоянно за ними следить...) 2000 бананов стоит 3 банана/км два в одну и 1 обратно 1000 бананов стоит 1 бананокилограмм отсюда уже получаем что за первую тысячу бананов верблюд сможет переместить оставшиеся 2000 бананов на 200 км (1000/5) за второую тысячу бананов на 333,3 км (1000/3) остается проийти 1000-200-333,3 = 466,7 км в остатке получеатся 533,3 банана (задача решается как на листочке так и в уме... никакого) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2012, 16:49 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37902676&tid=1342182]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 557ms |

| 0 / 0 |
