Here you go it's pseudo code but something like this:
sub testC(cost, 'AC'r, 'BC'r, 'CD'r){
ret=();
if(cost <= 'AC'r){
push(@ret,{'AC' => cost});
}else{
cost=cost-'AC'r;
if(cost <= 'BC'r){
push(@ret,{'AC' => 'AC'r, 'BC' => cost});
}else{
cost=cost-'BC'r;
if(cost <= 'CD'r){
push(@ret,{'AC' => 'AC'r, 'BC' => 'BC'r, 'CD' => cost}
+);
};
};
if(cost < 'BC'r){
push(@ret,{'BC' => cost})
}else{
cost=cost-'BC'r;
if(cost <= 'AC'r){
push(@ret,{'AC' => cost, 'BC' => 'BC'r});
}else{
cost=cost-'AC'r;
if(cost <= 'CD'r){
push(@ret,{'AC' => 'AC'r, 'BC' => 'BC'r, 'CD' => cost}
+);
};
};
if(cost < 'CD'r){
push(@ret,{'CD' => cost})
}else{
cost=cost-'CD'r;
if(cost <= 'AC'r){
push(@ret,{'AC' => cost, 'CD' => 'CD'r});
}else{
cost=cost-'AC'r;
if(cost <= 'BC'r){
push(@ret,{'AC' => 'AC'r, 'BC' => cost, 'CD' => 'CD'r}
+);
};
};
return(@ret)
}
=============
sub testB(cost, 'AB'r, 'BC'r, 'BD'r, ccost, 'AC'r, 'CD'r){
ret=();
if(cost <= 'AB'r){
@tail=testC(ccost, 'AC'r, 'BC'r, 'CD'r);
foreach (x in @tail){
push(@ret,{({'AB' => cost}, %tail[x])});
};
}else{
cost=cost-'AB'r;
if(cost <= 'BC'r){
@tail=testC(ccost, 'AC'r, 'BC'r-cost, 'CD'r);
foreach (x in @tail){
if(defined $tail[x]{'BC'}){
cost += %tail[x]{'BC'};
delete($tail[x]{'BC'});
push(@ret,{({'AB' => 'AB'r, 'BC' => cost}, %tail[x
+])});
}else;
};
}else{
cost=cost-'BC'r;
if(cost <= 'BD'r){
@tail=testC(ccost, 'AC'r, 0, 'CD'r);
foreach (x in @tail){
push(@ret,{({'AC' => 'AC'r, 'BC' => 'BC'r, 'CD' =>
+ cost}, %tail)});
};
};
};
};
####
if(cost <= 'BC'r){
@tail=testC(ccost, 'AC'r, 'BC'r-cost, 'CD'r);
foreach (x in @tail){
if(defined $tail[x]{'BC'}){
cost += %tail[x]{'BC'};
delete($tail[x]{'BC'});
};
push(@ret,{({'AB' => 'AB'r, 'BC' => cost}, %tail[x])})
+;
};
}else{
cost=cost-'BC'r;
if(cost <= 'AB'r){
%tail=testC(ccost, 'AC'r, 0, 'CD'r);
foreach (x in @tail){
push(@ret,{({'BC' => 'BC'r, 'AB' => cost}, %tail)});
};
}else{
cost=cost-'AB'r;
if(cost <= 'BD'r){
%tail=testC(ccost, 'AC'r, 0, 'CD'r);
foreach (x in @tail){
push(@ret,{({'BC' => 'BC'r, 'BD' => cost}, %tail)}
+);
};
};
};
};
####
if(cost < 'BD'r){
@tail=testC(ccost, 'AC'r, 'BC'r, 'CD'r);
foreach (x in @tail){
push(@ret,{({'BD' => cost}, %tail[x])});
};
}else{
cost=cost-'BD'r;
if(cost <= 'AB'r){
@tail=testC(ccost, 'AC'r, 'BC'r, 'CD'r);
foreach (x in @tail){
push(@ret,{({'AB' => cost, 'BD' => 'BD'r}, %tail[x])})
+;
};
}else{
cost=cost-'AB'r;
if(cost <= 'BC'r){
foreach (x in @tail){
if(defined $tail[x]{'BC'}){
cost += %tail[x]{'BC'};
delete($tail[x]{'BC'});
};
push(@ret,{({'AC' => 'AC'r, 'BC' => cost, 'BD'
+ => 'BD'r}, %tail[x])});
};
};
};
};
}
foreach tech in edeck:
if(tech.cost.lust>(her.stat.lust-lustx)){
edeck.remove(tech)
};
@tech[bills]=testB($tech[cost]['B']-'B'x, $her[stat]['AB']
+, $her[stat]['BC'], $her[stat]['BD'], $tech[cost]['C']-'C'x, $her[sta
+t]['AC'], $her[stat]['CD'])
if(@tech[bills] == 0 ){
edeck.remove(tech)
}else{
}
|