По договоренности
Нужно написать программу на прологе. вот текст задания
В высотном здании (150 этажей) багдадского банка возник пожар. Огонь распространяется со скоростью 1 этаж в минуту. В здании имеется лифт, который движется со скоростью 10 этажей в минуту и застревает, если проходит через этаж, захваченный огнем. В момент начала пожара лифт стоит на первом этаже и там же находится знаменитый багдадский вор, желающий вынести из банка как можно больше золотых монет. Он знает номера этажей, на которых хранятся монеты, и точные их количества на каждом таком этаже. Для поиска монет на этаже и переноса
их в лифт ему требуется две минуты. Напишите программу, моделирующую поведение багдадского вора для получения максимально возможного количества монет. Номер этажа, где начался пожар, задается. Также предусмотрите возможность изменить параметров здания, скорости пожара и скорости лифта, чтобы вор мог пользоваться программой в разных зданиях.
есть код на паскале:
program pojar;
uses crt;
type int = integer;
mass = array [1..150] of int;
masss = array [1..150] of real;
const n = 150;
var i,j, bank,m,nn : int;
h, l : real;
floor,kk : mass;
paid : masss;
function sbor(m,nn:real):real;
begin
sbor:=abs(m-nn)*0.1+1.5;
end;
function rasst (l, m : real) : real;
begin
if m<l then rasst:=l-m else rasst:=0;
end;
procedure table;
var k,kkk:real;
begin
for i:=2 to n do
if sbor(i,nn)<rasst(l,i) then
paid[i]:=floor[i]/sbor(i,nn)
else paid[i]:=0;
end;
function getmax:integer;
var k:integer; max:real;
begin
k:=1;
max:=0;
for i:=1 to n do
if paid[i]>max then begin max:=paid[i]; k:=i;
end;
getmax:=k;
end;
procedure vor(var l:real; var nn:int);
begin
table;
m:=getmax;
if floor[m]=0 then exit;
bank:=floor[m]+bank;
writeln('zabrali ',floor[m],' monet s ',m,' etaja');
floor[m]:=0;
l:=l-sbor(m,nn);
nn:=m;
vor(l,nn);
end;
begin
nn:=1;
m:=1;
clrscr;
writeln('vvod monet');
randomize;
floor[1]:=0;
for i:=2 to n do floor[i]:=random(999)+11;
writeln('vvedite etaj na4ala pojara');
readln(l);
vor(l,nn);
writeln('sobrano ',bank,'...');
end.