public int FirstAnswer() { var ord = Buslines .OrderBy(x => TimeToNext(x)); return(ord.First() * TimeToNext(ord.First())); }
public bool IsAnswer(long t) { bool answer = Buslines .Zip(Diffs, (a, b) => (t + b) % a) .All(x => x == 0); return(answer); }
public long SecondAnswer() { long seed = 0; long step = Buslines.First(); int i = 1; while (!IsAnswer(seed)) { seed += step; if (seed % Buslines.First() == 0 && (seed + Diffs[i]) % Buslines.ElementAt(i) == 0) { step = Buslines[0..(i + 1)].Select(x => Convert.ToInt64(x)).Aggregate((a, b) => a * b);