Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,51 @@
|
|||
$ include "seed7_05.s7i";
|
||||
include "float.s7i";
|
||||
|
||||
const type: bounty is new struct
|
||||
var integer: value is 0;
|
||||
var float: weight is 0.0;
|
||||
var float: volume is 0.0;
|
||||
end struct;
|
||||
|
||||
const func bounty: bounty (in integer: value, in float: weight, in float: volume) is func
|
||||
result
|
||||
var bounty: bountyVal is bounty.value;
|
||||
begin
|
||||
bountyVal.value := value;
|
||||
bountyVal.weight := weight;
|
||||
bountyVal.volume := volume;
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
const bounty: panacea is bounty(3000, 0.3, 0.025);
|
||||
const bounty: ichor is bounty(1800, 0.2, 0.015);
|
||||
const bounty: gold is bounty(2500, 2.0, 0.002);
|
||||
const bounty: sack is bounty(0, 25.0, 0.25);
|
||||
const integer: maxPanacea is trunc(min(sack.weight / panacea.weight, sack.volume / panacea.volume));
|
||||
const integer: maxIchor is trunc(min(sack.weight / ichor.weight, sack.volume / ichor.volume));
|
||||
const integer: maxGold is trunc(min(sack.weight / gold.weight, sack.volume / gold.volume));
|
||||
var bounty: current is bounty.value;
|
||||
var bounty: best is bounty.value;
|
||||
var array integer: bestAmounts is 3 times 0;
|
||||
var integer: numPanacea is 0;
|
||||
var integer: numIchor is 0;
|
||||
var integer: numGold is 0;
|
||||
begin
|
||||
for numPanacea range 0 to maxPanacea do
|
||||
for numIchor range 0 to maxIchor do
|
||||
for numGold range 0 to maxGold do
|
||||
current.value := numGold * gold.value + numIchor * ichor.value + numPanacea * panacea.value;
|
||||
current.weight := flt(numGold) * gold.weight + flt(numIchor) * ichor.weight + flt(numPanacea) * panacea.weight;
|
||||
current.volume := flt(numGold) * gold.volume + flt(numIchor) * ichor.volume + flt(numPanacea) * panacea.volume;
|
||||
if current.value > best.value and current.weight <= sack.weight and current.volume <= sack.volume then
|
||||
best := current;
|
||||
bestAmounts := [] (numPanacea, numIchor, numGold);
|
||||
end if;
|
||||
end for;
|
||||
end for;
|
||||
end for;
|
||||
writeln("Maximum value achievable is " <& best.value);
|
||||
writeln("This is achieved by carrying " <& bestAmounts[1] <& " panacea, " <& bestAmounts[2] <& " ichor and " <& bestAmounts[3] <& " gold items");
|
||||
writeln("The weight of this carry is " <& best.weight <& " and the volume used is " <& best.volume digits 4);
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue