public void Part1(string[] lines) { var numCards = (lines.Length - 1) / 6; var bingoCards = new List <BingoCard>(); for (int i = 0; i < numCards; i++) { var cardLines = new ArraySegment <string>(lines, 2 + (6 * i), 5); var card = new BingoCard(cardLines.ToArray()); bingoCards.Add(card); } var numbers = lines[0].Split(",").Select(x => long.Parse(x)).ToList(); foreach (var number in numbers) { foreach (var card in bingoCards) { if (card.CallNumber(number)) { var uncalledValue = card.GetUncalledCardValue(); Console.WriteLine($"Card has bingo. Uncalled value is {uncalledValue}. Last number called is: {number}. Score is: {uncalledValue * number}."); return; } } } }