コード例 #1
0
ファイル: Day5.cs プロジェクト: BrianPainter88/Advent2020
        public SeatingRange GetRange(SeatingRange range, bool shouldTakeUpper)
        {
            var difference = range.Max - range.Min;
            var half       = difference >> 1;
            var adjustment = range.Min + half;

            return(shouldTakeUpper
                ? new SeatingRange(adjustment + 1, range.Max)
                : new SeatingRange(range.Min, adjustment));
        }
コード例 #2
0
ファイル: Day5.cs プロジェクト: BrianPainter88/Advent2020
        public int GetColumnIdFromPattern(string pattern)
        {
            var range         = new SeatingRange(0, 7);
            var columnPattern = GetColumnPattern(pattern);

            var characterArray = columnPattern.ToCharArray();

            range = characterArray
                    .Select(ShouldTakeUpper)
                    .Aggregate(range, GetRange);

            return(ShouldTakeUpper(characterArray.Last())
                ? range.Max
                : range.Min);
        }