RosettaCodeData/Task/Fairshare-between-two-and-more/PascalABC.NET/fairshare-between-two-and-more.pas
2024-11-04 21:53:44 -08:00

22 lines
532 B
ObjectPascal

function ThueMorseSequence(terms, baseValue: integer): list<integer>;
begin
result := new List<integer>;
for var i := 0 to terms - 1 do
begin
var sum := 0;
var n := i;
while (n > 0) do
begin
// Compute the digit sum
sum += n mod baseValue;
n := n div baseValue;
end;
// Compute the digit sum modulo baseValue.
result.Add(sum mod baseValue);
end;
end;
begin
foreach var baseValue in |2, 3, 5, 11| do
println('Base', baseValue, '=', ThueMorseSequence(25, baseValue));
end.