home *** CD-ROM | disk | FTP | other *** search
/ Game Killer / Game_Killer.bin / 281.POPBEST.PAS < prev    next >
Pascal/Delphi Source File  |  1991-07-08  |  2KB  |  50 lines

  1. program BestPopStrategy;
  2. { This produces a little table on strategies on whether to TW or walk
  3.   from home planet to terra to pick up colonists. }
  4. var
  5.   n : integer;
  6.   twthere,
  7.   there, back : integer;
  8.   oreneeded : integer;
  9.   TurnsPerRound,
  10.   turns       : integer;
  11.   pop         : integer;
  12.   holds       : integer;
  13.   BestAverage : real;
  14.   BestLoad    : integer;
  15.   
  16. begin
  17.   write('How far is it from planet to closest fighter cloud to terra? ');
  18.   readln( twthere );
  19.   write('How far is it from closest approach to terra? ');
  20.   readln( there );
  21.   write('How far is it terra to planet? ');
  22.   readln( back );
  23.   write('How many holds do you have available? ');
  24.   readln( holds );
  25.   BestAverage := holds/(twthere + there +1 + back);
  26.   BestLoad := 0;
  27.   writeln('Fly to terra, back to planet.  Average ',  BestAverage:1:2, ' pop/turn');
  28.   OreNeeded := 3*(twthere + back);
  29.   if twthere = 0 then
  30.     TurnsPerRound := there + 2
  31.   else
  32.     TurnsPerRound := there + 3;
  33.   pop := 0;
  34.   turns := 1;
  35.   n := 1;
  36.   repeat
  37.       pop := pop + holds - n*OreNeeded + 3*twthere;
  38.       turns := turns + TurnsPerRound;
  39.       if pop/turns > BestAverage then
  40.         begin
  41.           bestAverage := pop/turns;
  42.           bestLoad    := n * OreNeeded;
  43.         end;
  44.       writeln('Load ', n * OreNeeded : 3, ' ore. Average ', pop/turns : 6 : 2);
  45.       n := n + 1;
  46.   until ( n * OreNeeded >= holds ) or (0.80 * bestAverage > pop/turns );
  47.   writeln;
  48.   writeln('Best result: load ', bestLoad, ' ore, for average ', BestAverage : 6 :2 );
  49.   readln;
  50. end.