namespace Day9; public class Pyramid { public Sequence Bottom { get; } private readonly IList _layers = new List(); public Pyramid(Sequence bottom) { Bottom = bottom; Build(); } public long Predict() { var next = 0L; foreach (var sequence in _layers.Reverse().Skip(1)) { next = sequence.Next(next); } return next; } private void Build() { _layers.Add(Bottom); while (!_layers.Last().IsZeros()) { _layers.Add(_layers.Last().Difference()); } } }