public NakedPairDisplayer(DomainFacade displayer, NakedPair nakedPair) : base(displayer, nakedPair) { _locKey = "naked-pair"; _pos1 = nakedPair.Positions.ElementAt(0); _pos2 = nakedPair.Positions.ElementAt(1); _value1 = nakedPair.Values.ElementAt(0); _value2 = nakedPair.Values.ElementAt(1); _houses = HintsHelper.GetHouses(_positions); _positionsInHouses = new List <Position>(); foreach (var house in _houses) { _positionsInHouses.AddRange(HintsHelper.GetPositionsInHouse(_pos1, house)); } _explanationSteps.AddRange(new Action[] { Explain1, Explain2, Explain3, Explain4, Explain5, }); }
private IEnumerable <Position> GetPositionsToRemove(DomainFacade informer) { var positionsInHouses = GetHouses() .SelectMany(house => HintsHelper.GetPositionsInHouse(Pos, house)); return(positionsInHouses .Where(pos => _values.Any(value => informer.HasCandidate(pos, value))) .Except(_positions)); }
private void Explain3() { SetupDisplayer(); var posInHouse = HintsHelper.GetPositionsInHouse(_position, _house); _displayer.MarkInputOrCandidate(Color.Illegal, posInHouse, _value); _displayer.MarkCells(Color.Illegal, posInHouse); _displayer.Mark(Color.Legal, _position, _value); _displayer.SetDescription(ExplanationKey(3), _value, _value, _houseFormated, _position); }
public override void DisplaySolution() { SetupDisplayer(); _displayer.SetDescription(DescriptionKey, _displayer.Format(_house, _position), _value, _position); _displayer.SetValueFilter(_value); _displayer.MarkCells(Color.Illegal, HintsHelper.GetPositionsInHouse(_position, _house)); _displayer.MarkCell(Color.Legal, _position); }
public FullHouseDisplayer(DomainFacade displayer, FullHouse fullHouse) : base(displayer, fullHouse, "full-house") { _position = fullHouse.Position; _value = fullHouse.Value; _house = HintsHelper.HouseFirstOrDefault(_position, positions => positions.Count(pos => !_informer.HasValue(pos)) == 1 ); _positionsInHouse = HintsHelper.GetPositionsInHouse(_position, _house); _explanationSteps.Add(Explain01); _explanationSteps.Add(Explain02); _explanationSteps.Add(Explain03); for (int i = 0; i < _value - 1; i++) { var explain = ExplainN(i); _explanationSteps.Add(explain); } _explanationSteps.Add(ExplainLast); }
public IEnumerable <Position> GetPositionsWithCandidate(House house, Position housePosition, Value value) { return(HintsHelper .GetPositionsInHouse(housePosition, house) .Where(pos => HasCandidate(pos, value))); }