(*
Pattern Explanation:
The sequence is: 8, 64, 80, 136, 152
Compute the differences between consecutive numbers:
64 - 8 = 56
80 - 64 = 16
136 - 80 = 56
152 - 136 = 16
The pattern clearly alternates:
+56, +16, +56, +16, ...
8 + 56 = 64
64 + 16 = 80
80 + 56 = 136
136 + 16 = 152
Since the last step was +16, the next step must be +56.
Therefore, the next number is: 152 + 56 = 208
*)
program NextSequenceNumber;
uses
SysUtils;
// ------------------------------------------------------------
// Function to compute the next number in the alternating-difference pattern
// ------------------------------------------------------------
function NextNumberInSequence(const seq: array of Integer; size: Integer): Integer;
var
diff: array[0..100] of Integer; // large enough for this example
diffCount: Integer;
i: Integer;
nextDiff: Integer;
begin
// Compute differences between consecutive numbers
diffCount := 0;
for i := 1 to size - 1 do
begin
diff[diffCount] := seq[i] - seq[i - 1];
Inc(diffCount);
end;
// The pattern alternates: 56, 16, 56, 16, ...
// To continue the pattern, take the second-to-last difference (56)
nextDiff := diff[diffCount - 2];
// Return the next number in the sequence
NextNumberInSequence := seq[size - 1] + nextDiff;
end;
var
seq: array[0..4] of Integer = (8, 64, 80, 136, 152);
nextValue: Integer;
begin
// Compute the next number using the function
nextValue := NextNumberInSequence(seq, Length(seq));
WriteLn('Next number in the sequence: ', nextValue);
end.
(*
run:
Next number in the sequence: 208
*)