public void MultipleWords_HaveExpectedLetters() { InnerAnacrosticPuzzle puzzle = new InnerAnacrosticPuzzle(); puzzle.AddWordToClues("as"); puzzle.AddWordToClues("is"); PuzzleWord firstWord = puzzle.Clues[0]; PuzzleLetter firstLetter = firstWord.Letters[0]; Assert.AreEqual('a', firstLetter.ActualLetter); Assert.AreEqual(1, firstLetter.NumericIndex); Assert.AreEqual('A', firstLetter.AlphabeticIndex); PuzzleLetter secondLetter = firstWord.Letters[1]; Assert.AreEqual('s', secondLetter.ActualLetter); Assert.AreEqual(2, secondLetter.NumericIndex); Assert.AreEqual('A', secondLetter.AlphabeticIndex); PuzzleWord secondWord = puzzle.Clues[1]; PuzzleLetter firstLetterInSecondWord = secondWord.Letters[0]; Assert.AreEqual('i', firstLetterInSecondWord.ActualLetter); Assert.AreEqual(3, firstLetterInSecondWord.NumericIndex); Assert.AreEqual('B', firstLetterInSecondWord.AlphabeticIndex); PuzzleLetter secondLetterInSecondWord = secondWord.Letters[1]; Assert.AreEqual('s', secondLetterInSecondWord.ActualLetter); Assert.AreEqual(4, secondLetterInSecondWord.NumericIndex); Assert.AreEqual('B', secondLetterInSecondWord.AlphabeticIndex); }
public void SingleWord_HasExpectedLetters() { PuzzleWord word = new PuzzleWord("as", 1, 'A'); PuzzleLetter firstLetter = word.Letters[0]; Assert.AreEqual("A1", firstLetter.ToString(), "Unexpected result from ToString override."); Assert.AreEqual('a', firstLetter.ActualLetter); Assert.AreEqual(1, firstLetter.NumericIndex); Assert.AreEqual('A', firstLetter.AlphabeticIndex); PuzzleLetter secondLetter = word.Letters[1]; Assert.AreEqual('s', secondLetter.ActualLetter); Assert.AreEqual(2, secondLetter.NumericIndex); Assert.AreEqual('A', secondLetter.AlphabeticIndex); }
private void FindMatchingLetterIndex(PuzzleLetter letterToMatch, int letterIndex) { if (IndexMap != null) { if (IndexMap.ContainsKey(letterIndex)) { return; } } int puzzleLength = Puzzle.PhraseAsString.Length; int puzzleLengthWithoutBlanks = puzzleLength; int currentOffset = 0; int offsetOfMatch = 0; foreach (var letter in Puzzle.Phrase) { if (letter.ActualLetter == ' ' || Char.IsPunctuation(letter.ActualLetter)) { puzzleLengthWithoutBlanks--; } else { if (letter == letterToMatch) { offsetOfMatch = currentOffset; } currentOffset++; } } var matchingLetterIndex = puzzleLengthWithoutBlanks + offsetOfMatch; if (IndexMap == null) { IndexMap = new Dictionary <int, int>(matchingLetterIndex * 2); } IndexMap[letterIndex] = matchingLetterIndex; IndexMap[matchingLetterIndex] = letterIndex; }