Пример #1
0
 def test_should_fail_to_locate_words_that_are_not_on_horizontal_vertical_or_diagonal_lines(
     self, ):
     puzzle = WordSearch(["abc", "def"])
     self.assertIsNone(puzzle.search("aef"))
     self.assertIsNone(puzzle.search("ced"))
     self.assertIsNone(puzzle.search("abf"))
     self.assertIsNone(puzzle.search("cbd"))
Пример #2
0
class WordSearchTests(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'screeaumgr\n'
                  'alxhpburyi\n'
                  'jalaycalmp\n'
                  'clojurermt')
        self.example = WordSearch(puzzle)

    def test_horizontal_words_left_to_right(self):
        self.assertEqual(self.example.search('clojure'),
                         (Point(0, 9), Point(6, 9)))

    def test_horizontal_words_right_to_left(self):
        self.assertEqual(self.example.search('elixir'),
                         (Point(5, 4), Point(0, 4)))

    def test_vertical_words_top_to_bottom(self):
        self.assertEqual(self.example.search('ecmascript'),
                         (Point(9, 0), Point(9, 9)))

    def test_vertical_words_bottom_to_top(self):
        self.assertEqual(self.example.search('rust'),
                         (Point(8, 4), Point(8, 1)))

    def test_diagonal_words_top_left_to_bottom_right(self):
        self.assertEqual(self.example.search('java'),
                         (Point(0, 0), Point(3, 3)))

    def test_diagonal_upper_bottom_right_to_top_left(self):
        self.assertEqual(self.example.search('lua'),
                         (Point(7, 8), Point(5, 6)))

    def test_diagonal_upper_bottom_left_to_top_right(self):
        self.assertEqual(self.example.search('lisp'),
                         (Point(2, 5), Point(5, 2)))

    def test_diagonal_upper_top_right_to_bottom_left(self):
        self.assertEqual(self.example.search('ruby'),
                         (Point(7, 5), Point(4, 8)))

    def test_words_that_are_not_in_the_puzzle(self):
        self.assertIsNone(self.example.search('haskell'))

    def test_search_differently_sized_puzzles(self):
        puzzle = ('qwertyuiopz\n' 'luamsicrexe\n' 'abcdefghijk')
        self.assertEqual(
            WordSearch(puzzle).search('exercism'), (Point(10, 1), Point(3, 1)))
Пример #3
0
 def test_should_locate_multiple_words_written_in_different_horizontal_directions(
         self):
     puzzle = WordSearch([
         "jefblpepre",
         "camdcimgtc",
         "oivokprjsm",
         "pbwasqroua",
         "rixilelhrs",
         "wolcqlirpc",
         "screeaumgr",
         "alxhpburyi",
         "jalaycalmp",
         "clojurermt",
     ])
     self.assertEqual(puzzle.search("elixir"), (Point(5, 4), Point(0, 4)))
     self.assertEqual(puzzle.search("clojure"), (Point(0, 9), Point(6, 9)))
Пример #4
0
 def test_should_locate_words_written_top_to_bottom(self):
     puzzle = WordSearch([
         "jefblpepre",
         "camdcimgtc",
         "oivokprjsm",
         "pbwasqroua",
         "rixilelhrs",
         "wolcqlirpc",
         "screeaumgr",
         "alxhpburyi",
         "jalaycalmp",
         "clojurermt",
     ])
     self.assertEqual(puzzle.search("clojure"), (Point(0, 9), Point(6, 9)))
     self.assertEqual(puzzle.search("elixir"), (Point(5, 4), Point(0, 4)))
     self.assertEqual(puzzle.search("ecmascript"),
                      (Point(9, 0), Point(9, 9)))
Пример #5
0
 def test_should_locate_a_left_to_right_word_in_ten_line_grid(self):
     puzzle = WordSearch([
         "jefblpepre",
         "camdcimgtc",
         "oivokprjsm",
         "pbwasqroua",
         "rixilelhrs",
         "wolcqlirpc",
         "screeaumgr",
         "alxhpburyi",
         "jalaycalmp",
         "clojurermt",
     ])
     self.assertEqual(puzzle.search("clojure"), (Point(0, 9), Point(6, 9)))
Пример #6
0
 def test_should_locate_multiple_words(self):
     puzzle = WordSearch([
         "jefblpepre",
         "camdcimgtc",
         "oivokprjsm",
         "pbwasqroua",
         "rixilelhrs",
         "wolcqlirpc",
         "fortranftw",
         "alxhpburyi",
         "jalaycalmp",
         "clojurermt",
     ])
     self.assertEqual(puzzle.search("fortran"), (Point(0, 6), Point(6, 6)))
     self.assertEqual(puzzle.search("clojure"), (Point(0, 9), Point(6, 9)))
Пример #7
0
 def test_should_fail_to_locate_a_word_that_is_not_in_the_puzzle(self):
     puzzle = WordSearch([
         "jefblpepre",
         "camdcimgtc",
         "oivokprjsm",
         "pbwasqroua",
         "rixilelhrs",
         "wolcqlirpc",
         "screeaumgr",
         "alxhpburyi",
         "jalaycalmp",
         "clojurermt",
     ])
     self.assertEqual(puzzle.search("clojure"), (Point(0, 9), Point(6, 9)))
     self.assertEqual(puzzle.search("elixir"), (Point(5, 4), Point(0, 4)))
     self.assertEqual(puzzle.search("ecmascript"),
                      (Point(9, 0), Point(9, 9)))
     self.assertEqual(puzzle.search("rust"), (Point(8, 4), Point(8, 1)))
     self.assertEqual(puzzle.search("java"), (Point(0, 0), Point(3, 3)))
     self.assertEqual(puzzle.search("lua"), (Point(7, 8), Point(5, 6)))
     self.assertEqual(puzzle.search("lisp"), (Point(2, 5), Point(5, 2)))
     self.assertEqual(puzzle.search("ruby"), (Point(7, 5), Point(4, 8)))
     self.assertIsNone(puzzle.search("haskell"))
Пример #8
0
 def test_should_locate_words_written_bottom_left_to_top_right(self):
     puzzle = WordSearch([
         "jefblpepre",
         "camdcimgtc",
         "oivokprjsm",
         "pbwasqroua",
         "rixilelhrs",
         "wolcqlirpc",
         "screeaumgr",
         "alxhpburyi",
         "jalaycalmp",
         "clojurermt",
     ])
     self.assertEqual(puzzle.search("clojure"), (Point(0, 9), Point(6, 9)))
     self.assertEqual(puzzle.search("elixir"), (Point(5, 4), Point(0, 4)))
     self.assertEqual(puzzle.search("ecmascript"),
                      (Point(9, 0), Point(9, 9)))
     self.assertEqual(puzzle.search("rust"), (Point(8, 4), Point(8, 1)))
     self.assertEqual(puzzle.search("java"), (Point(0, 0), Point(3, 3)))
     self.assertEqual(puzzle.search("lua"), (Point(7, 8), Point(5, 6)))
     self.assertEqual(puzzle.search("lisp"), (Point(2, 5), Point(5, 2)))
Пример #9
0
class WordSearchTests(unittest.TestCase):
    def test_initial_game_grid(self):
        puzzle = 'jefblpepre'
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertIsNone(searchAnswer)

    def test_left_to_right_word(self):
        puzzle = 'clojurermt'
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(0, 0), Point(6, 0)))

    def test_left_to_right_word_different_position(self):
        puzzle = 'mtclojurer'
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(2, 0), Point(8, 0)))

    def test_different_left_to_right_word(self):
        puzzle = 'coffeelplx'
        searchAnswer = WordSearch(puzzle).search('coffee')
        self.assertEqual(searchAnswer, (Point(0, 0), Point(5, 0)))

    def test_different_left_to_right_word_different_position(self):
        puzzle = 'xcoffeezlp'
        searchAnswer = WordSearch(puzzle).search('coffee')
        self.assertEqual(searchAnswer, (Point(1, 0), Point(6, 0)))

    def test_left_to_right_word_two_lines(self):
        puzzle = ('jefblpepre\n' 'tclojurerm\n')
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(1, 1), Point(7, 1)))

    def test_left_to_right_word_three_lines(self):
        puzzle = ('camdcimgtc\n' 'jefblpepre\n' 'clojurermt\n')
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(0, 2), Point(6, 2)))

    def test_left_to_right_word_ten_lines(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'screeaumgr\n'
                  'alxhpburyi\n'
                  'jalaycalmp\n'
                  'clojurermt\n')
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(0, 9), Point(6, 9)))

    def test_left_to_right_word_ten_lines_different_position(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'screeaumgr\n'
                  'alxhpburyi\n'
                  'clojurermt\n'
                  'jalaycalmp\n')
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(0, 8), Point(6, 8)))

    def test_different_left_to_right_word_ten_lines(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'fortranftw\n'
                  'alxhpburyi\n'
                  'clojurermt\n'
                  'jalaycalmp\n')
        searchAnswer = WordSearch(puzzle).search('fortran')
        self.assertEqual(searchAnswer, (Point(0, 6), Point(6, 6)))

    def test_multiple_words(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'fortranftw\n'
                  'alxhpburyi\n'
                  'jalaycalmp\n'
                  'clojurermt\n')
        searchAnswer = WordSearch(puzzle).search('fortran')
        self.assertEqual(searchAnswer, (Point(0, 6), Point(6, 6)))
        searchAnswer = WordSearch(puzzle).search('clojure')
        self.assertEqual(searchAnswer, (Point(0, 9), Point(6, 9)))

    def test_single_word_right_to_left(self):
        puzzle = 'rixilelhrs'
        searchAnswer = WordSearch(puzzle).search('elixir')
        self.assertEqual(searchAnswer, (Point(5, 0), Point(0, 0)))

    @classmethod
    def setUpClass(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'screeaumgr\n'
                  'alxhpburyi\n'
                  'jalaycalmp\n'
                  'clojurermt')
        self.example = WordSearch(puzzle)

    def test_horizontal_words_different_directions(self):
        self.assertEqual(self.example.search('clojure'),
                         (Point(0, 9), Point(6, 9)))
        self.assertEqual(self.example.search('elixir'),
                         (Point(5, 4), Point(0, 4)))

    def test_vertical_words_top_to_bottom(self):
        self.assertEqual(self.example.search('ecmascript'),
                         (Point(9, 0), Point(9, 9)))

    def test_vertical_words_bottom_to_top(self):
        self.assertEqual(self.example.search('rust'),
                         (Point(8, 4), Point(8, 1)))

    def test_diagonal_words_top_left_to_bottom_right(self):
        self.assertEqual(self.example.search('java'),
                         (Point(0, 0), Point(3, 3)))

    def test_diagonal_upper_bottom_right_to_top_left(self):
        self.assertEqual(self.example.search('lua'),
                         (Point(7, 8), Point(5, 6)))

    def test_diagonal_upper_bottom_left_to_top_right(self):
        self.assertEqual(self.example.search('lisp'),
                         (Point(2, 5), Point(5, 2)))

    def test_diagonal_upper_top_right_to_bottom_left(self):
        self.assertEqual(self.example.search('ruby'),
                         (Point(7, 5), Point(4, 8)))

    def test_words_that_are_not_in_the_puzzle(self):
        self.assertIsNone(self.example.search('haskell'))
Пример #10
0
 def test_should_accept_an_initial_game_grid_and_a_target_search_word(self):
     puzzle = WordSearch(["jefblpepre"])
     self.assertIsNone(puzzle.search("clojure"))
Пример #11
0
 def test_should_not_concatenate_different_lines_to_find_a_horizontal_word(
         self):
     puzzle = WordSearch(["abceli", "xirdfg"])
     self.assertIsNone(puzzle.search("elixir"))
Пример #12
0
 def test_should_locate_a_left_to_right_word_in_three_line_grid(self):
     puzzle = WordSearch(["camdcimgtc", "jefblpepre", "clojurermt"])
     self.assertEqual(puzzle.search("clojure"), (Point(0, 2), Point(6, 2)))
Пример #13
0
 def test_should_locate_a_left_to_right_word_in_two_line_grid(self):
     puzzle = WordSearch(["jefblpepre", "tclojurerm"])
     self.assertEqual(puzzle.search("clojure"), (Point(1, 1), Point(7, 1)))
Пример #14
0
 def test_should_locate_that_different_left_to_right_word_in_a_different_position(
         self):
     puzzle = WordSearch(["xcoffeezlp"])
     self.assertEqual(puzzle.search("coffee"), (Point(1, 0), Point(6, 0)))
Пример #15
0
 def test_should_locate_a_different_left_to_right_word(self):
     puzzle = WordSearch(["coffeelplx"])
     self.assertEqual(puzzle.search("coffee"), (Point(0, 0), Point(5, 0)))
Пример #16
0
class WordSearchTests(unittest.TestCase):

    @classmethod
    def setUpClass(self):
        puzzle = ('jefblpepre\n'
                  'camdcimgtc\n'
                  'oivokprjsm\n'
                  'pbwasqroua\n'
                  'rixilelhrs\n'
                  'wolcqlirpc\n'
                  'screeaumgr\n'
                  'alxhpburyi\n'
                  'jalaycalmp\n'
                  'clojurermt')
        self.example = WordSearch(puzzle)

    def test_horizontal_words_left_to_right(self):
        self.assertEqual(
            self.example.search('clojure'),
            (Point(0, 9), Point(6, 9))
        )

    def test_horizontal_words_right_to_left(self):
        self.assertEqual(
            self.example.search('elixir'),
            (Point(5, 4), Point(0, 4))
        )

    def test_vertical_words_top_to_bottom(self):
        self.assertEqual(
            self.example.search('ecmascript'),
            (Point(9, 0), Point(9, 9))
        )

    def test_vertical_words_bottom_to_top(self):
        self.assertEqual(
            self.example.search('rust'),
            (Point(8, 4), Point(8, 1))
        )

    def test_diagonal_words_top_left_to_bottom_right(self):
        self.assertEqual(
            self.example.search('java'),
            (Point(0, 0), Point(3, 3))
        )

    def test_diagonal_upper_bottom_right_to_top_left(self):
        self.assertEqual(
            self.example.search('lua'),
            (Point(7, 8), Point(5, 6))
        )

    def test_diagonal_upper_bottom_left_to_top_right(self):
        self.assertEqual(
            self.example.search('lisp'),
            (Point(2, 5), Point(5, 2))
        )

    def test_diagonal_upper_top_right_to_bottom_left(self):
        self.assertEqual(
            self.example.search('ruby'),
            (Point(7, 5), Point(4, 8))
        )

    def test_words_that_are_not_in_the_puzzle(self):
        self.assertIsNone(self.example.search('haskell'))

    def test_search_differently_sized_puzzles(self):
        puzzle = ('qwertyuiopz\n'
                  'luamsicrexe\n'
                  'abcdefghijk')
        self.assertEqual(
            WordSearch(puzzle).search('exercism'),
            (Point(10, 1), Point(3, 1))
        )
Пример #17
0
 def test_should_locate_the_same_word_written_left_to_right_in_a_different_position(
         self):
     puzzle = WordSearch(["mtclojurer"])
     self.assertEqual(puzzle.search("clojure"), (Point(2, 0), Point(8, 0)))
Пример #18
0
 def test_should_locate_one_word_written_left_to_right(self):
     puzzle = WordSearch(["clojurermt"])
     self.assertEqual(puzzle.search("clojure"), (Point(0, 0), Point(6, 0)))
Пример #19
0
 def test_should_not_wrap_around_horizontally_to_find_a_word(self):
     puzzle = WordSearch(["silabcdefp"])
     self.assertIsNone(puzzle.search("lisp"))
Пример #20
0
 def test_should_locate_a_single_word_written_right_to_left(self):
     puzzle = WordSearch(["rixilelhrs"])
     self.assertEqual(puzzle.search("elixir"), (Point(5, 0), Point(0, 0)))
Пример #21
0
from word_search import WordSearch

t = int(input("Enter number of Pages / Queries : "))
word_search = WordSearch()
q = 0

for _ in range((t * 2)):

    input_list = input().strip().split()

    if input_list[0] == "P":
        word_search.insert(input_list[1:])
    elif input_list[0] == "Q":
        ans = word_search.search(input_list[1:])
        q += 1
        print("Q{0}:".format(q), end=" ")
        if len(ans) <= 5:
            for i in ans:
                print(i, end=" ")
        else:
            for i in ans[:5]:
                print(i, end=" ")
        print()
Пример #22
0
 def test_should_not_wrap_around_vertically_to_find_a_word(self):
     puzzle = WordSearch(["s", "u", "r", "a", "b", "c", "t"])
     self.assertIsNone(puzzle.search("rust"))