Esempio n. 1
0
            internal GuardDataReader()
            {
                guards            = new List <Day04Solver.Guard>();
                currentGuard      = null;
                fallsAsleepMinute = 0;
                const string timestampRegexFormat = "\\[(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2})\\]";

                guardBeginsShiftParsingRegex = new Regex($"^{timestampRegexFormat} Guard #(\\d+) begins shift$");
                guardFallsAsleepParsingRegex = new Regex($"^{timestampRegexFormat} falls asleep$");
                guardWakesUpParsingRegex     = new Regex($"^{timestampRegexFormat} wakes up");
            }
Esempio n. 2
0
            private void HandleBeginsShift(Match match)
            {
                var id = int.Parse(match.Groups[6].Value);

                currentGuard = guards.SingleOrDefault(g => g.Id == id);
                if (currentGuard != null)
                {
                    return;
                }
                currentGuard = new Day04Solver.Guard(id);
                guards.Add(currentGuard);
            }
Esempio n. 3
0
        public Day04SolverTest()
        {
            var guard10 = new Day04Solver.Guard(10);

            guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(05, 25));
            guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(30, 55));
            guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(24, 29));
            var guard99 = new Day04Solver.Guard(99);

            guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(40, 50));
            guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(36, 46));
            guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(45, 55));
            var dataProvider = new Mock <DataProvider <IEnumerable <Day04Solver.Guard> > >();

            dataProvider.Setup(dp => dp.GetData()).Returns(new[] { guard10, guard99 });

            solver = new Day04Solver(dataProvider.Object);
        }
Esempio n. 4
0
        public void ReturnsGuardsFromFile()
        {
            const string filename = "data\\day04_guard_list.txt";
            var          guard10  = new Day04Solver.Guard(10);

            guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(05, 25));
            guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(30, 55));
            guard10.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(24, 29));
            var guard99 = new Day04Solver.Guard(99);

            guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(40, 50));
            guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(36, 46));
            guard99.SleepIntervals.Add(new Day04Solver.Guard.SleepInterval(45, 55));
            var expected = new[] { guard10, guard99 };
            var guards   = new Day04GuardFileReaderDataProvider(filename).GetData();

            Assert.Equal(expected, guards, new GuardComparer());
        }