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)); }
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); }