37 lines
747 B
Plaintext
37 lines
747 B
Plaintext
proc nonrec find([*] int A; word top; int n) bool:
|
|
word i;
|
|
bool found;
|
|
i := 0;
|
|
found := false;
|
|
while i < top and not found do
|
|
found := A[i] = n;
|
|
i := i + 1
|
|
od;
|
|
found
|
|
corp
|
|
|
|
proc nonrec gen_next([*] int A; word n) int:
|
|
int add, sub;
|
|
add := A[n-1] + n;
|
|
sub := A[n-1] - n;
|
|
A[n] :=
|
|
if sub > 0 and not find(A, n, sub)
|
|
then sub
|
|
else add
|
|
fi;
|
|
A[n]
|
|
corp
|
|
|
|
proc nonrec main() void:
|
|
[30] int A;
|
|
word i;
|
|
|
|
A[0] := 0;
|
|
write("First 15 items: 0");
|
|
for i from 1 upto 14 do write(gen_next(A, i):3) od;
|
|
writeln();
|
|
|
|
while not find(A, i, gen_next(A, i)) do i := i + 1 od;
|
|
writeln("First repeated item: A(", i:2, ") = ", A[i]:2)
|
|
corp
|