def test_solve(self):
     self.assertEqual(32, puzzle.solve(9, 25))
     self.assertEqual(8317, puzzle.solve(10, 1618))
     self.assertEqual(146373, puzzle.solve(13, 7999))
     # self.assertEqual(2764, puzzle.solve(17, 1104))
     self.assertEqual(54718, puzzle.solve(21, 6111))
     self.assertEqual(37305, puzzle.solve(30, 5807))
 def test_simple_solve(self):
     self.assertEqual(9, puzzle.solve({"metadata": [7, 2], "children": []}))
     self.assertEqual(
         99,
         puzzle.solve({
             "metadata": [1],
             "children": [{
                 "metadata": [99],
                 "children": []
             }, {
                 "metadata": [71],
                 "children": []
             }]
         }))
     self.assertEqual(
         71,
         puzzle.solve({
             "metadata": [2],
             "children": [{
                 "metadata": [99],
                 "children": []
             }, {
                 "metadata": [71],
                 "children": []
             }]
         }))
     self.assertEqual(
         198,
         puzzle.solve({
             "metadata": [1, 1],
             "children": [{
                 "metadata": [99],
                 "children": []
             }, {
                 "metadata": [71],
                 "children": []
             }]
         }))
     self.assertEqual(
         106,
         puzzle.solve({
             "metadata": [1, 2],
             "children": [{
                 "metadata": [99],
                 "children": []
             }, {
                 "metadata": [1],
                 "children": [
                     {
                         "metadata": [7],
                         "children": []
                     },
                 ]
             }]
         }))
 def test_basic_solve(self):
     data = [1, -2, 3, 1]
     self.assertEqual(2, puzzle.solve(data))
     data = [+3, +3, +4, -2, -4]
     self.assertEqual(10, puzzle.solve(data))
     data = [+1, -1]
     self.assertEqual(0, puzzle.solve(data))
     data = [-6, +3, +8, +5, -6]
     self.assertEqual(5, puzzle.solve(data))
     data = [+7, +7, -2, -7, -4]
     self.assertEqual(14, puzzle.solve(data))
示例#4
0
 def test_simple_solve(self):
     self.assertEqual(9, puzzle.solve({"metadata": [7, 2], "children": []}))
     self.assertEqual(
         15,
         puzzle.solve({
             "metadata": [7, 2],
             "children": [{
                 "metadata": [2, 2],
                 "children": []
             }, {
                 "metadata": [1, 1],
                 "children": []
             }]
         }))
 def test_solve(self):
     data = {
         '#1': {
             'id': '#1',
             'x': 1,
             'y': 3,
             'width': 4,
             'height': 4
         },
         '#2': {
             'id': '#2',
             'x': 3,
             'y': 1,
             'width': 4,
             'height': 4
         },
         '#3': {
             'id': '#3',
             'x': 5,
             'y': 5,
             'width': 2,
             'height': 2
         }
     }
     self.assertEqual('#3', puzzle.solve(data))
 def test_solve(self):
     lines = """abcdef
     bababc
     abbcde
     abcccd
     aabcdd
     abcdee
     ababab"""
     data = puzzle.parse(lines.split())
     answer = puzzle.solve(data)
     self.assertEqual(12, answer)
    def test_solve(self):
        lines = """abcde
        abcef
fghij
klmno
pqrst
fguij
axcye
wvxyz"""
        data = puzzle.parse(lines.split())
        answer = puzzle.solve(data)
        self.assertEqual("fgij", answer)
示例#8
0
 def test_solve(self):
     data = {
         (10, 11, 1, 5): 20,
         (10, 11, 1, 30): 25,
         (99, 11, 2, 40): 10,
         (10, 11, 3, 24): 5,
         (99, 11, 4, 36): 10,
         (99, 11, 5, 45): 10
     }
     answer = puzzle.solve(data)
     self.assertEqual(240, answer)
     pass
 def test_solve(self):
     data = {
         "metadata": [1, 1, 2],
         "children": [{
             "metadata": [10, 11, 12],
             "children": []
         }, {
             "metadata": [2],
             "children": [{
                 "metadata": [99],
                 "children": []
             }]
         }]
     }
     self.assertEqual(66, puzzle.solve(data))
示例#10
0
 def test_solve(self):
     data = [{
         'id': '#1',
         'x': 1,
         'y': 3,
         'width': 4,
         'height': 4
     }, {
         'id': '#2',
         'x': 3,
         'y': 1,
         'width': 4,
         'height': 4
     }, {
         'id': '#3',
         'x': 5,
         'y': 5,
         'width': 2,
         'height': 2
     }]
     self.assertEqual(4, puzzle.solve(data))
def test(seed=None):
    '''Run solve() 50 times on randomly shuffled 3x3 boards,
    check for correctness and record total elapsed time.'''
    print("==============================================")
    print("Running 50 randomized tests:\n")
    random.seed(a=seed)
    total_time = 0
    passed = 0
    for i in range(50):
        if i % 10 == 0:
            print("Running test", i + 1, "-", i + 10, "...")
        board = shuffle(sample_board)
        start = time.time()
        solution = solve(board[:])
        # print("Solution is", solution)
        end = time.time()
        total_time += end - start
        if not check(solution, board, passed):
            print("Current test terminated.")
            print("==============================================")
            return
        passed += 1
    print("All tests passed. solve() total running time:", total_time, "s")
    print("==============================================")
示例#12
0
 def test_solve(self):
     data = [(10, 5), (10, 6), (10, 7), (10, 30), (10, 31), (10, 32),
             (10, 33), (10, 34), (99, 40), (99, 41), (10, 34)]
     answer = puzzle.solve(data)
     self.assertEqual(10 * 34, answer)
     pass
示例#13
0
import puzzle

if __name__ == "__main__":
    pieces = puzzle.puzzle("Scans/horses numbered", 380, 50)
    sortedScoreEdges = puzzle.solve(pieces)
 def test_pass(self):
     masses = puzzle.parse(file("puzzleInput.txt").readlines())
     answer = puzzle.solve(masses)
     self.assertEqual(3348909, answer)
 def test_pass(self):
     answer = puzzle.solve(465, 71498)
     self.assertEqual(0, answer)
示例#16
0
 def test_basic_solve(self):
   data = [12, 14, 1969, 100756]
   self.assertEqual(34241, puzzle.solve(data))
示例#17
0
def main():
    global FPSCLOCK, DISPLAYSURF, BASICFONT, RESET_SURF, RESET_RECT, NEW_SURF, NEW_RECT, SOLVE_SURF, SOLVE_RECT

    pygame.init()
    FPSCLOCK = pygame.time.Clock()
    DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
    pygame.display.set_caption('Slide Puzzle')
    BASICFONT = pygame.font.Font('freesansbold.ttf', BASICFONTSIZE)

    # Store the option buttons and their rectangles in OPTIONS.
    RESET_SURF, RESET_RECT = makeText('Reset', TEXTCOLOR, TILECOLOR,
                                      WINDOWWIDTH - 120, WINDOWHEIGHT - 90)
    NEW_SURF, NEW_RECT = makeText('New Game', TEXTCOLOR, TILECOLOR,
                                  WINDOWWIDTH - 120, WINDOWHEIGHT - 60)
    SOLVE_SURF, SOLVE_RECT = makeText('Solve', TEXTCOLOR, TILECOLOR,
                                      WINDOWWIDTH - 120, WINDOWHEIGHT - 30)

    genBoard = generateNewPuzzle(4)
    mainBoard = pz.copy_board(genBoard)
    msg = 'Click tile or press arrow keys to slide.'  # contains the message to show in the upper left corner.
    drawBoard(mainBoard, msg)

    while True:  # main game loop
        slideTo = None  # the direction, if any, a tile should slide

        checkForQuit()
        for event in pygame.event.get():  # event handling loop
            if event.type == MOUSEBUTTONUP:
                spotx, spoty = getSpotClicked(mainBoard, event.pos[0],
                                              event.pos[1])

                if (spotx, spoty) == (None, None):
                    # check if the user clicked on an option button
                    if RESET_RECT.collidepoint(event.pos):
                        mainBoard = pz.copy_board(
                            genBoard)  # clicked on Reset button
                        drawBoard(mainBoard, msg)

                    elif NEW_RECT.collidepoint(event.pos):
                        genBoard = generateNewPuzzle(
                            16)  # clicked on New Game button
                        mainBoard = pz.copy_board(genBoard)
                        drawBoard(mainBoard, msg)

                    elif SOLVE_RECT.collidepoint(event.pos):
                        solution = pz.solve(mainBoard)
                        resetAnimation(mainBoard,
                                       solution)  # clicked on Solve button
                else:
                    # check if the clicked tile was next to the blank spot

                    blanky, blankx = getBlankPosition(mainBoard)
                    if spotx == blankx + 1 and spoty == blanky:
                        slideTo = LEFT
                    elif spotx == blankx - 1 and spoty == blanky:
                        slideTo = RIGHT
                    elif spotx == blankx and spoty == blanky + 1:
                        slideTo = UP
                    elif spotx == blankx and spoty == blanky - 1:
                        slideTo = DOWN

            elif event.type == KEYUP:
                # check if the user pressed a key to slide a tile
                if event.key in (K_LEFT, K_a) and isValidMove(mainBoard, LEFT):
                    slideTo = LEFT
                elif event.key in (K_RIGHT, K_d) and isValidMove(
                        mainBoard, RIGHT):
                    slideTo = RIGHT
                elif event.key in (K_UP, K_w) and isValidMove(mainBoard, UP):
                    slideTo = UP
                elif event.key in (K_DOWN, K_s) and isValidMove(
                        mainBoard, DOWN):
                    slideTo = DOWN

        if slideTo:
            # slideAnimation(mainBoard, slideTo, 'Click tile or press arrow keys to slide.', 8)  # show slide on screen
            mainBoard = makeMove(mainBoard, slideTo)
            drawBoard(mainBoard, msg)
            # allMoves.append(slideTo)  # record the slide
        pygame.display.update()
        FPSCLOCK.tick(FPS)
示例#18
0
 def test_pass(self):
     data = puzzle.parse(open("data.txt").readlines())
     answer = puzzle.solve(data)
     self.assertEqual(0, answer)
示例#19
0
 def test_pass(self):
   f = open("input.txt", "r")
   data = puzzle.parse(f.readlines())
   answer = puzzle.solve(data)
   self.assertEqual(0, answer)
 def test_solve(self):
     self.assertEqual(4, puzzle.solve("dabAcCaCBAcCcaDA"))
     # self.assertEqual(0, puzzle.solve("a"*5000+"A"*5000))
     self.assertEqual(0, puzzle.solve("abBA"))
 def test_pass(self):
     data = file("input.txt").read(500000).strip()
     answer = puzzle.solve(data)
     self.assertEqual(0, answer)
 def test_basic_solve(self):
     masses = [12, 14, 1969, 100756]
     self.assertEqual(34241, puzzle.solve(masses))
 def test_basic_solve(self):
     data = [1, 1, -2]
     self.assertEqual(0, puzzle.solve(data))
示例#24
0
    def test_pass(self):
        with open("input.txt") as inTxt:
            data = puzzle.parse(inTxt.readlines())

        answer = puzzle.solve(data)
        self.assertEqual(0, answer)
 def test_pass(self):
     data = puzzle.parse(file("input.txt").readlines())
     answer = puzzle.solve(data)
     self.assertEqual(0, answer)
示例#26
0
 def test_pass(self):
     data = puzzle.parse("data.txt")
     answer = puzzle.solve(data)
     self.assertEqual(0, answer)