Найти - Пользователи
Полная версия: "Голодные Окуни" или Помогите добить задачку!
Начало » Python для новичков » "Голодные Окуни" или Помогите добить задачку!
1 2 3 4 5
Ferroman
Погоди. За 1 единицу времени только 1 окунь съедает другого?
sypper-pit
судя по всему это особые окуни … они при седании друг друга делятся :) (и взял он 3 хлеба и 3 рыбы и накормил всю толпу :) ) , шутки шутками , только это уже начинает немного напригать :) надо четко сформулированное матиматическое действие .. а так это кк то странно получается …. думаю тут можно попробывать с пределами решить. Что то вроде было “Х” рыб из них “У” скушали(стакой то прогрессией) .. итд надо четко знать что решить.
Ferroman
Ну, у меня квадратичная функция получилась, правда я толком все не проверял.
pasaranax
При N=4 и M=2, в первой итерации 2 окуня съедят двух окуней, останется 2 сытых на М=1 окуня, во второй итерации один окунь съест одного окуня, останется один окунь сытый на М=2.
Каждый такт окуней должно становиться вдвое меньше, всего тактов должно быть М, потому что насыщаются они все одновременно. Непонятно только, если их нечетное количество, то оставшийся один должен либо голодать, либо съесть того, кто в данную итерацию уже кого-то есть.
FILLIPO
Ferroman
За 1 единицу времени только 1 окунь съедает другого?
Нет. Все окуни, которые могут насытиться, едят. Окуни, которые не могут насытиться, ждут следующий круг.(например, если окуней 5 и нужно съесть двоих(т.е. M=2), то на первом шаге двое окуней едят двух других, один остается не у дел. (такие окуни - переменная “а” в приведенном выше решении. ))

sypper-pit
надо четко сформулированное математическое действие
Деление. С сохранением остатка. Т.е. каждый цикл - это выполнение следующей операции:
N%(M+1)

pasaranax
Каждый такт окуней должно становиться вдвое меньше, всего тактов должно быть М, потому что насыщаются они все одновременно. Непонятно только, если их нечетное количество, то оставшийся один должен либо голодать, либо съесть того, кто в данную итерацию уже кого-то есть.
Точно. Поскольку возникает это непонятное место, то предполагаю, что такт в задаче немного не такой, как предложено Вами. Для наглядности вернусь к примеру с N=4 и M=2.
такт1
первый окунь ест второго и третьего. Четвертый “отдыхает”.
такт2
первый и второй окунь остались. конец решения.
sypper-pit
числа я так понимаю не должны быть дробными , тогда всегда будет проблема с чётными и не четными , тогда надо определять четное или не четное число а затем исходя из этого подставлять формулу (ИМХО)
o7412369815963
вычисляйте как угодно, но итог будет = N/(M+1)
Ferroman
o7412369815963
Нет, не будет. Сначала думайте, а потом пишите, а не наоборот.
o7412369815963
Ferroman
o7412369815963
Сначала думайте, а потом пишите, а не наоборот.
взаимно.

вот например ваши примеры:
N=4, M=2, result = 4/(2+1) = 1
графический: 1 2 3 4 -> 1( 2 3(4) ) - третий съел четвертого, первый съел оставшихся

пример 2:
N=5, M=2, result = 5/(2+1) = 1
1 2 3 4 5 -> 1( 2(3) 4(5) ) - второй съел треьего, четвертый съел пятого, первый съел оставшихся

пример 3:
N=4, M=1, result = 4/(1+1) = 2
1 2 3 4 -> 1(2) 3(4)

ещё примерчик:
N=18, M=3, result = 18/(3+1)=4
* * * * * * * * * * * * * * * * * * -> *(***) *(***) *(***) *(***(**))
(* - рыба)

ЗЫ: исправил опечатку
lightcaster
Здесь есть еще один вопрос. Не понятно, сколько собратьев сможет съесть окунь на одном шаге итерации. Из прочтения треда можно сделать вывод, что на каждой итерации окунь есть максимально возможное количество до насыщения (т.е. меньшее, либо равное M).
Однако, задачка была бы намного более сложной, если бы на каждой итерации окуню позволялось съесть только одного сородича, который бы “догонялся” на следующих итерациях (тогда была бы зависимость не от предыдущего шага, а от M предыдущих шагов).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB