protected override object ResolveFirstPart(string[] input) { BoardsContainer boardsContainer = GetBoards(input); MatchCollection draws = Regex.Matches(input[0], @"(\d+)"); for (int i = 0; i < draws.Count; i++) { int value = int.Parse(draws[i].Value); boardsContainer.MarkBoards(value); List <Check[, ]> winningBoards = boardsContainer.GetWinningBoards(); if (winningBoards.Count != 0) { return(boardsContainer.GetSumOfAllMarkedValues(winningBoards[0]) * value); } } return(-1); }
protected override object ResolveSecondPart(string[] input) { BoardsContainer boardsContainer = GetBoards(input); MatchCollection draws = Regex.Matches(input[0], @"(\d+)"); int lastWinningBoardValue = 0; for (int i = 0; i < draws.Count; i++) { int value = int.Parse(draws[i].Value); boardsContainer.MarkBoards(value); List <Check[, ]> winningBoards = boardsContainer.GetWinningBoards(); for (int j = 0; j < winningBoards.Count; j++) { lastWinningBoardValue = boardsContainer.GetSumOfAllMarkedValues(winningBoards[j]) * value; boardsContainer.Boards.Remove(winningBoards[j]); } } return(lastWinningBoardValue); }