void setAttemptResultFeedbacks()
        {
            OverallFeedback overalFeedback = _overallFeedbackGenerator.Calculate(_attemptResult.Guess);

            _attemptResult.OveralFeedback = overalFeedback;

            _attemptResult.Feedbacks.Clear();
            foreach (var feedbackGenerator in _feedbackGenerators)
            {
                Feedback feedback = feedbackGenerator.Calculate(_attemptResult.Guess);
                _attemptResult.Feedbacks.Add(feedback);
            }
        }
Ejemplo n.º 2
0
        void setSimilarPieces(ref OverallFeedback result, List <Piece> puzzlePieces, List <Piece> guessPieces)
        {
            for (int i = 0; i < puzzlePieces.Count; i++)
            {
                if (puzzlePieces[i].Equals(Piece.Null))
                {
                    continue;
                }

                if (puzzlePieces[i].IsSimilar(guessPieces[i]))
                {
                    result.SimilarPieces++;
                }
            }
        }
Ejemplo n.º 3
0
        void setMisplacedPieces(ref OverallFeedback result, List <Piece> puzzlePieces, List <Piece> guessPieces)
        {
            for (int i = 0; i < puzzlePieces.Count; i++)
            {
                Piece guessPiece = guessPieces[i];
                if (guessPiece.Equals(Piece.Null))
                {
                    continue;
                }

                if (puzzlePieces.Contains(guessPiece))
                {
                    result.MisplacedPieces++;
                    puzzlePieces[puzzlePieces.IndexOf(guessPiece)] = Piece.Null;
                    guessPieces[i] = Piece.Null;
                }
            }
        }
Ejemplo n.º 4
0
        void setCorrectPieces(ref OverallFeedback result, List <Piece> puzzlePieces, List <Piece> guessPieces)
        {
            for (int i = 0; i < puzzlePieces.Count; i++)
            {
                if (puzzlePieces[i].Equals(Piece.Null))
                {
                    continue;
                }

                if (puzzlePieces[i].Equals(guessPieces[i]))
                {
                    puzzlePieces[i] = Piece.Null;
                    guessPieces[i]  = Piece.Null;

                    result.CorrectPieces++;
                }
            }
        }
Ejemplo n.º 5
0
        public OverallFeedback Calculate(Guess guess)
        {
            OverallFeedback result = new OverallFeedback();

            if (guess?.Pieces.Count != _puzzle.Pieces.Count)
            {
                throw new System.InvalidOperationException("guess.Pieces length should match the puzzle.Pieces length");
            }

            List <Piece> puzzlePieces = new List <Piece>(_puzzle.Pieces);
            List <Piece> guessPieces  = new List <Piece>(guess.Pieces);

            setCorrectPieces(ref result, puzzlePieces, guessPieces);
            setSimilarPieces(ref result, puzzlePieces, guessPieces);
            setMisplacedPieces(ref result, puzzlePieces, guessPieces);

            return(result);
        }