Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Логическая задачка: верблюд продает бананы. / 21 сообщений из 21, страница 1 из 1
02.08.2012, 13:07
    #37901827
Кантачес
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
По логическим способностям я гуманитарий, в алгоритмике - очень плохо.
Был на одном собеседовании - успешно провалил. На память осталась интересная задача.
Верблюд выращивает и продает бананы. Выращивает в одном месте, продает - на базаре за 1к км. Вырастил 3 тысячи бананов. За 1 км движения съедает по одному банану (что в одну, что в другую сторону). За раз может унести 1к бананов. Нужно принести на рынок максимальное количество для продажи. Как сделать?
Если прямиком идти - то все по дороге и съест, и на обратный путь не останется. Додумался, что нужно путь делить на n отрезков и от одного к другому переносить по 1к бананов, пока не доберешься до рынка: от начала до отрезка 1 перенес 1к бананов, затем вернулся, взял еще 1к и перенес к отрезку 1 и тд. Чувствую, что нужно определить максимальное количество отрезков при котором верблюд принесет на рынок максимальное количество бананов, т.е. взаимосвязь такая... На этом благополучно и стопорюсь - мозг просто "пробуксовывать" начинает.
Отсюда 2 вопроса:
1. Такая "пробуксовка" - это нормально? А то я уже долго над этой проблемой комплексую и чуть ли не мрт мозга делать собрался, чтоб посмотреть - может у меня аномалия какая. Не смешно.
2. Помогите решить, чтоб я смог процесс понять - без кода, на уровне математики (кажется, тут алгебра).
...
Рейтинг: 0 / 0
02.08.2012, 13:17
    #37901853
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Кантачес, логический ответ: автору задачи надо провериться у психиатра.

ЗЫ. Напрашивается ответ: перетаскивать все 3 кучки поочерёдно по 1 км, но уж больно простой он - наверное, где-то есть подвох
...
Рейтинг: 0 / 0
02.08.2012, 13:20
    #37901859
pirovindos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
1к км, это одна тысяча км?
...
Рейтинг: 0 / 0
02.08.2012, 13:21
    #37901862
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
tanglirперетаскивать все 3 кучки поочерёдно по 1 км, но уж больно простой он - наверное, где-то есть подвох так только на передвижение понадобится 5000 бананов
...
Рейтинг: 0 / 0
02.08.2012, 13:29
    #37901880
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
1) за 3 подхода перенести все бананы на 200м. На передвижение потратится как раз 1000 бананов (3 раза туда и 2 обратно)
2) за 2 подхода перенести все оставшиеся бананы на 333.(3) метра. Опять потратим 1000 бананов (2 раза туда и 1 обратно)
3) Оставшуюся тыщу бананов отнести до рынка. Потратится 466.(6) бананов, остальное продадим.

Смысл - как можно скорее уменьшать количество тысяч бананов (и как следствие - количество переходов)
...
Рейтинг: 0 / 0
02.08.2012, 13:32
    #37901892
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
под метрами имелись в виду км
...
Рейтинг: 0 / 0
02.08.2012, 13:38
    #37901902
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
КантачесПо логическим способностям я гуманитарий, в алгоритмике - очень плохо.
Был на одном собеседовании - успешно провалил. На память осталась интересная задача.
Верблюд выращивает и продает бананы. Выращивает в одном месте, продает - на базаре за 1к км. Вырастил 3 тысячи бананов. За 1 км движения съедает по одному банану (что в одну, что в другую сторону). За раз может унести 1к бананов. Нужно принести на рынок максимальное количество для продажи. Как сделать?
Если прямиком идти - то все по дороге и съест, и на обратный путь не останется. Додумался, что нужно путь делить на n отрезков и от одного к другому переносить по 1к бананов, пока не доберешься до рынка: от начала до отрезка 1 перенес 1к бананов, затем вернулся, взял еще 1к и перенес к отрезку 1 и тд. Чувствую, что нужно определить максимальное количество отрезков при котором верблюд принесет на рынок максимальное количество бананов, т.е. взаимосвязь такая... На этом благополучно и стопорюсь - мозг просто "пробуксовывать" начинает.
Отсюда 2 вопроса:
1. Такая "пробуксовка" - это нормально? А то я уже долго над этой проблемой комплексую и чуть ли не мрт мозга делать собрался, чтоб посмотреть - может у меня аномалия какая. Не смешно.
2. Помогите решить, чтоб я смог процесс понять - без кода, на уровне математики (кажется, тут алгебра).Не алгебра. Задачу можно решать разными способами, это скорее вопрос общей методологии решения подобных задач. Где-то в архивах "Кванта" была статья на эту тему.

Например, начнём с конца: верблюд вернулся домой и съел последний банан. Вообще, с рынка верблюд, видимо, шёл без разворотов. Экономичней всего, если на каждом километре он при этом подбирал по банану (потому что доставка бананов от дома чем дальше, тем дороже по накладным расходам, а воров в пустыне нет). Теперь переметнёмся к началу: вот он взял бананы и пошёл. Взял, видимо, максимум; по дороге выкладывает бананы на обратный путь; в какой-то момент кладёт оставшееся и возвращается домой за второй порцией. Потом он возьмёт её, дойдёт (положим) дотуда же, вернётся, возьмёт третью порцию, и от промежуточной точки (в которой будет лежать не больше 2000 бананов) тем же манером в два приёма сходит до базара. Или до второй промежуточной точки, в которой в итоге будет не более 1000 бананов и от которой до базара он дойдёт уже за раз.

Много времени было на решение задачи?
...
Рейтинг: 0 / 0
02.08.2012, 14:06
    #37901963
Кантачес
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
tanglirКантачес, логический ответ: автору задачи надо провериться у психиатра.

ЗЫ. Напрашивается ответ: перетаскивать все 3 кучки поочерёдно по 1 км, но уж больно простой он - наверное, где-то есть подвох
Не, задача прикольная. Про подвох не знаю, но один из интервьюеров сказал, что вариантов решения несколько.

pirovindos, да.

Яростный Меч, предложенный вами вариант как раз был похож на тот, что предложили в качестве ответа. Интервьюировали сразу человек 7-8, смотрели на работу в команде. По 1ске:)

Abstraction, не помню, может минут 5. Алгоритм в коде реализовывать не нужно было, просто на бумаге представить последовательность действий для решения.
...
Рейтинг: 0 / 0
02.08.2012, 14:23
    #37902002
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Кантачес,

Интересно. Задача, похоже, не так проста.
Если посчитать, то предложенным мной способом верблюд уйдёт на 1000/6 + 1000/4 + 1000/2 = 916 км. То есть, чтобы не погибнуть голодной смертью, ему придётся развернуться, не дойдя до базара.
С другой стороны, если разматывать задачу "от базара", это похоже на правильный ответ: посмотрим, насколько далеко верблюд сможет дойти с заданным количеством бананов. Отрезок, по которому он проходит 2 раза, не может быть длиннее 500 км; отрезок, по которому он проходит 4 раза, бессмысленно делать длиннее 250 км, так как на это расстояние он сможет перенести не больше 1000 бананов; то же для большего числа "проходов". Таким образом, если у нас N тысяч бананов, максимум мы уйдём на 500*(1+1/2+...+1/N).
Выводы: на рынке продать при 3000 бананов ничего не получится, первый проданный банан мы имеем при начальном запасе 3667 бананов, при сколь угодно большом числе бананов рынок может быть сколь угодно далеко.
...
Рейтинг: 0 / 0
02.08.2012, 14:30
    #37902021
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Кантачес,

кстати, а надо предусмотреть бананы для обратного пути? а то мой вариант - если только дойти до рынка и продать, а дальше "хоть трава не расти"
...
Рейтинг: 0 / 0
02.08.2012, 14:33
    #37902033
Кантачес
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Abstraction, либо там было оговорено, что обратный путь от рынка после продажи бананов не считается - тут, к сожалению, не помню.
...
Рейтинг: 0 / 0
02.08.2012, 15:09
    #37902120
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Заклеить рот верблюду. Всё просто.
...
Рейтинг: 0 / 0
02.08.2012, 16:25
    #37902250
Ага
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Заодно и задницу заклеить, дабы замедлить отвод дерьма и переваривание жратвы.
...
Рейтинг: 0 / 0
02.08.2012, 16:27
    #37902257
Александр Пузаков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Кантачес,

Какова грузоподъемность у верблюда?
...
Рейтинг: 0 / 0
02.08.2012, 16:29
    #37902264
Александр Пузаков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Александр ПузаковКантачес,

Какова грузоподъемность у верблюда?
А, все, нашел...
...
Рейтинг: 0 / 0
02.08.2012, 19:51
    #37902596
манагер$
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Э-э-х, технари. С вашим подходом готовы всё прожрать и сгноить, т.к. пока будете туда сюда ходить бананы сгниют.
Подход манагера. Найти того, кто довезёт всё и побыстрее. И уломать при этом на наименьшую цену.
Кантачес, вы какой-то не правильный гуманитарий. :)
...
Рейтинг: 0 / 0
02.08.2012, 20:27
    #37902618
Дмитрий 777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
3000-5*200=2000
2000-3*200=1400
1400-3*200=800 бананов. а уже 600 метров
еще 400 бананов и он на рынке
итого 400 бананов на продажу
...
Рейтинг: 0 / 0
02.08.2012, 21:53
    #37902670
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Дмитрий 777итого 400 бананов на продажу"маловато будет" (с)
у меня ( 12952201 ) 533 получилось
...
Рейтинг: 0 / 0
02.08.2012, 22:01
    #37902676
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Классически такая задача формулируется как транспортная - машина должна из имеющегося запаса бензина доставить макс. кол-во в указанную точку (вариант - уехать максимально далеко).

Код: sql
1.
Яростный Меч

дал верный ответ (обычно, правда, такая задача предполагает целочисленное решение, в этом случае на базар будет доставлено 533 банана). То, что оно верное - можно доказать. Строгое доказательство, полагаю, существует, я дам не совсем строгое, а так, основу.

Условие "доставить макс. кол-во на базар" эквивалентно (почти - без учёта того, что ради увеличения доставки можно кое-что бросить посередь пути) условию "использовать мин. количество на питание по дороге".

Исходно у нас 3000 бананов. Т.к. грузоподъёмность составляет 1000, то из исходной точки придётся выходить трижды. Запомним это.
Собственно алгоритм движений одинаков - берём по максимуму, идём до некоей точки, разгружаемся по максимуму, возвращаемся к точке, где ещё есть бананы... ну кроме последнего рывка, само собой. При этом получается, что движение вперёд - полезное, назад - паразитное (растёт расход на питание в пути!). Более того, чем дальше мы идём вперёд на очередной стадии (когда сзади ещё остались бананы, за которыми надо вернуться), тем больше эти паразитные расходы. К тому же минимизация количества этих "маятниковых" хождений тоже благотворно скажется на результате. (вот тут - отступление от строгости, доказательство, что первые два хождения должны быть равны, сложновато, примем это как постулат) Когда верблюд добредёт третий раз до точки первого сброса, он должен прикончить первую тысячу бананов, чтобы на след. стадии уменьшить количество челночков с 3 до 2. Соответственно он прошёл расстояние до первой точки сброса 5 раз, т.е. она располагается на 1000/5=200 км. Аналогично просчитывается положение второй точки сброса - в 1000/3 км от первой. И как итог - 533 банана на базаре.

Кстати, довольно забавно было скормить эту задачу Экселевому солверу. Подробно расписать движение верблюда, учесть, что на горбу, что на земле, что съедено, понаставить ограничений (всё целое, всё от 0 до 1000, ещё кое-какие ограничения одних цифирей по сравнению с другими...) и попросить максимизировать итог. Решение даётся почти мгновенно.
...
Рейтинг: 0 / 0
03.08.2012, 16:49
    #37903775
ALKIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
Я бы решал так:

переместить в одну сторону
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 банана

(задача решается как на листочке так и в уме... никакого)
...
Рейтинг: 0 / 0
03.08.2012, 16:51
    #37903779
ALKIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Логическая задачка: верблюд продает бананы.
ALKIR,

хотел дописать, что никакого EXCEL не нужно...
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Логическая задачка: верблюд продает бананы. / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]