для того чтобы узнать сколько нужно было бы защиты группе у которой проигрышь в силе нужно сделать следующий рассчет
исходная задача:
сила1 = 1000
сила2 = 1500
защита1=?
защита2=2500
условие победы: при условии когда защита2 после боев будет равна защите1, сила1 должна быть больше силы2
дополнение: после боя защита уменьшается на силу противника. и исходя из коэфициента начального *коэфициент = сила/защиту* рассчитывается сила для следующего боя
решение которое у меня в голове вертится только цикл составить
шаг_цикла = 10;
сила1=1000;
защита1=3000;
сила2 = 1500;
защита2 = 2500;
кф2=рассчет_коэф(сила2, защита2);
while(1){
кф1=рассчет_коэф(сила1, защита1);
результат = вызов_рекурсии_боев(сила1, защита1, сила2, защита2);
если(результат)выход_из_цикла;
защита1 += шаг_цикла;
}
вызов_рекурсии_боев(сила1, защита1, сила2, защита2){
защита1 = защита1 -сила2;
защита2 = защита2 -сила1;
сила1 = защита1*кф1;
сила2 = защита2*кф2;
если(сила1<0 or сила2<0 )вернуть false;#экстреный выход из рекурсии
следующий_бой = (защита1 -сила2) - (защита2 -сила1);
если( следующий_бой > 0 ){
если (сила1>силы2) вернуть true;
рез_рекурсии = вызов_рекурсии_боев(сила1, защита1, сила2, защита2);
возврат рез_рекурсии;
}
или если(следующий_бой == 0){
если (сила1>силы2) вернуть true;
вернуть false;
}
или{
вернуть false;
}
}
ну может както так наверно ))) хотя возможно есть вариант и получше
может какнибудь так???