RosettaCodeData/Task/Hofstadter-Figure-Figure-sequences/PascalABC.NET/hofstadter-figure-figure-sequences.pas
2025-02-27 18:35:13 -05:00

31 lines
517 B
ObjectPascal

function ffs: sequence of integer; forward;
function ffr: sequence of integer;
begin
var n := 1;
yield n;
foreach var s in ffs do
begin
n += s;
yield n;
end;
end;
function ffs: sequence of integer;
begin
yield 2;
yield 4;
var u := 5;
foreach var r in ffr do
begin
if r <= u then continue;
foreach var x in (u..r - 1) do yield x;
u := r + 1;
end;
end;
begin
ffr.Take(10).Println;
var a := ffr.Take(40) + ffs.Take(960);
(1..1000).SequenceEqual(a.Sorted).Println;
end.