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

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

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

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

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

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

pirovindos, да.

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

Abstraction, не помню, может минут 5. Алгоритм в коде реализовывать не нужно было, просто на бумаге представить последовательность действий для решения.
...
Рейтинг: 0 / 0
Логическая задачка: верблюд продает бананы.
    #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
Логическая задачка: верблюд продает бананы.
    #37902021
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кантачес,

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

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

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

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

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

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

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

Кстати, довольно забавно было скормить эту задачу Экселевому солверу. Подробно расписать движение верблюда, учесть, что на горбу, что на земле, что съедено, понаставить ограничений (всё целое, всё от 0 до 1000, ещё кое-какие ограничения одних цифирей по сравнению с другими...) и попросить максимизировать итог. Решение даётся почти мгновенно.
...
Рейтинг: 0 / 0
Логическая задачка: верблюд продает бананы.
    #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
Логическая задачка: верблюд продает бананы.
    #37903779
ALKIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ALKIR,

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


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