דילוג לתוכן
  • חוקי הפורום
  • לא נפתר
  • משתמשים
  • חיפוש גוגל בפורום
  • צור קשר
עיצובים
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • ברירת מחדל (ללא עיצוב (ברירת מחדל))
  • ללא עיצוב (ברירת מחדל)
כיווץ
לוגו מותג
  1. דף הבית
  2. קטגוריות בהרצה
  3. תכנות
  4. Python
  5. עזרה הדדית - Python
  6. סקריפט פותר סודוקו | גאונותו של GPT 4

סקריפט פותר סודוקו | גאונותו של GPT 4

מתוזמן נעוץ נעול הועבר עזרה הדדית - Python
10 פוסטים 4 כותבים 331 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • פ מנותק
    פ מנותק
    פייתוניסט
    כתב ב נערך לאחרונה על ידי פייתוניסט
    #1

    לאור האובססיה שלי לסודוקו ......... ביקשתי מ GPT 4 קוד פייתון פותר סודוקו והתוצאה מהירה ומדהימה:

    כדי להריץ אותו על המחשב צריך להתקין את הספריה numpy ע"י כתיבה בשורת הפקודה:

    pip install numpy
    

    אפשר גם להריץ על קומפיילר פייתון אונליין ללא צורך בהתקנה כלל

    import numpy as np
    
    def is_valid(board, row, col, num):
        if num in board[row]:
            return False
        if num in board[:, col]:
            return False
    
        square_row = (row // 3) * 3
        square_col = (col // 3) * 3
        if num in board[square_row:square_row + 3, square_col:square_col + 3]:
            return False
        return True
    
    def solve_sudoku(board):
        for row in range(9):
            for col in range(9):
                if board[row, col] == 0:
                    for num in range(1, 10):
                        if is_valid(board, row, col, num):
                            board[row, col] = num
                            if solve_sudoku(board):
                                return True
                            board[row, col] = 0
                    return False
        return True
    
    def print_board(board):
        for row in range(9):
            if row % 3 == 0 and row != 0:
                print("- - - - - - - - - - -")
            for col in range(9):
                if col % 3 == 0 and col != 0:
                    print("| ", end="")
                print(board[row, col], end=" ")
            print()
    
    def main():
        board = np.array([
            [5, 3, 0, 0, 7, 0, 0, 0, 0],
            [6, 0, 0, 1, 9, 5, 0, 0, 0],
            [0, 9, 8, 0, 0, 0, 0, 6, 0],
            [8, 0, 0, 0, 6, 0, 0, 0, 3],
            [4, 0, 0, 8, 0, 3, 0, 0, 1],
            [7, 0, 0, 0, 2, 0, 0, 0, 6],
            [0, 6, 0, 0, 0, 0, 2, 8, 0],
            [0, 0, 0, 4, 1, 9, 0, 0, 5],
            [0, 0, 0, 0, 8, 0, 0, 7, 9]
        ])
    
        print("Unsolved Sudoku:")
        print_board(board)
    
        if solve_sudoku(board):
            print("\nSolved Sudoku:")
            print_board(board)
        else:
            print("\nThis sudoku cannot be solved.")
    
    if __name__ == "__main__":
        main()
    
    תגובה 1 תגובה אחרונה
    4
    • א מנותק
      א מנותק
      אלי ויל
      כתב ב נערך לאחרונה על ידי
      #2

      https://www.google.com/search?q=Python+code+that+solves+sudoku&sourceid=chrome&ie=UTF-8

      פ תגובה 1 תגובה אחרונה
      0
      • א אלי ויל

        https://www.google.com/search?q=Python+code+that+solves+sudoku&sourceid=chrome&ie=UTF-8

        פ מנותק
        פ מנותק
        פייתוניסט
        כתב ב נערך לאחרונה על ידי
        #3

        @אלי-ויל בסדר אז הוא לא היחיד (הקוד שלו מוצלח יותר מקודים אחרים שמצאתי ברשת הוא קצר מהיר ויעיל)

        G תגובה 1 תגובה אחרונה
        0
        • פ פייתוניסט

          @אלי-ויל בסדר אז הוא לא היחיד (הקוד שלו מוצלח יותר מקודים אחרים שמצאתי ברשת הוא קצר מהיר ויעיל)

          G מנותק
          G מנותק
          GIGA
          כתב ב נערך לאחרונה על ידי GIGA
          #4

          @פייתוניסט נכון, הוא לא משתמש ברקורסיה למשל (כמו פה) והוא מסדר את התוצאה בצורת טבלה שזה נחמד.
          מצד שני, אפשר לכתוב סקריפט יותר טוב, כמו עם משתנה לגודל הסודוקו ולא שיהיה קבוע על 9
          (גם אפשר בלי לייבא ספריות אבל למי אכפת).
          מה שחשוב זה שאם הקוד לא מוצא קצת חן בעיניך, אתה מבקש מGPT תיקונים והוא מבצע תוך שניות, מה שאי אפשר לומר על אתר תכנות כזה או אחר.

          נראה לי יותר קשור לקטגוריה בינה מלאכותית

          פ תגובה 1 תגובה אחרונה
          1
          • G GIGA

            @פייתוניסט נכון, הוא לא משתמש ברקורסיה למשל (כמו פה) והוא מסדר את התוצאה בצורת טבלה שזה נחמד.
            מצד שני, אפשר לכתוב סקריפט יותר טוב, כמו עם משתנה לגודל הסודוקו ולא שיהיה קבוע על 9
            (גם אפשר בלי לייבא ספריות אבל למי אכפת).
            מה שחשוב זה שאם הקוד לא מוצא קצת חן בעיניך, אתה מבקש מGPT תיקונים והוא מבצע תוך שניות, מה שאי אפשר לומר על אתר תכנות כזה או אחר.

            נראה לי יותר קשור לקטגוריה בינה מלאכותית

            פ מנותק
            פ מנותק
            פייתוניסט
            כתב ב נערך לאחרונה על ידי
            #5

            @GIGA

            @GIGA כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

            הוא לא משתמש ברקורסיה

            הוא דווקא כן משתמש ברקורסיה בפונקציה solve_sudoku אבל למה לא?

            @GIGA כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

            מה שחשוב זה שאם הקוד לא מוצא קצת חן בעיניך, אתה מבקש מGPT תיקונים והוא מבצע תוך שניות, מה שאי אפשר לומר על אתר תכנות כזה או אחר.

            יש לי אפשרות לשאלה אחת ביום לGPT 4

            א G 2 תגובות תגובה אחרונה
            0
            • פ פייתוניסט

              @GIGA

              @GIGA כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

              הוא לא משתמש ברקורסיה

              הוא דווקא כן משתמש ברקורסיה בפונקציה solve_sudoku אבל למה לא?

              @GIGA כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

              מה שחשוב זה שאם הקוד לא מוצא קצת חן בעיניך, אתה מבקש מGPT תיקונים והוא מבצע תוך שניות, מה שאי אפשר לומר על אתר תכנות כזה או אחר.

              יש לי אפשרות לשאלה אחת ביום לGPT 4

              א מנותק
              א מנותק
              אלי ויל
              כתב ב נערך לאחרונה על ידי
              #6

              @פייתוניסט כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

              יש לי אפשרות לשאלה אחת ביום לGPT 4

              איך קיבלת?

              אינני מבין תיכנות אבל זה מה שנתן לי החינמי
              .

              def solve_sudoku(board):
                  if not find_empty_cell(board):
                      return True
              
                  row, col = find_empty_cell(board)
                  for num in range(1, 10):
                      if is_valid(board, row, col, num):
                          board[row][col] = num
              
                          if solve_sudoku(board):
                              return True
              
                          board[row][col] = 0
              
                  return False
              
              
              def is_valid(board, row, col, num):
                  # Check row
                  for i in range(9):
                      if board[row][i] == num:
                          return False
              
                  # Check column
                  for i in range(9):
                      if board[i][col] == num:
                          return False
              
                  # Check 3x3 box
                  start_row = (row // 3) * 3
                  start_col = (col // 3) * 3
                  for i in range(3):
                      for j in range(3):
                          if board[start_row + i][start_col + j] == num:
                              return False
              
                  return True
              
              
              def find_empty_cell(board):
                  for i in range(9):
                      for j in range(9):
                          if board[i][j] == 0:
                              return i, j
                  return None
              
              
              def print_board(board):
                  for i in range(9):
                      for j in range(9):
                          print(board[i][j], end=' ')
                      print()
              
              
              # Example Sudoku board (0 represents empty cells)
              board = [
                  [5, 3, 0, 0, 7, 0, 0, 0, 0],
                  [6, 0, 0, 1, 9, 5, 0, 0, 0],
                  [0, 9, 8, 0, 0, 0, 0, 6, 0],
                  [8, 0, 0, 0, 6, 0, 0, 0, 3],
                  [4, 0, 0, 8, 0, 3, 0, 0, 1],
                  [7, 0, 0, 0, 2, 0, 0, 0, 6],
                  [0, 6, 0, 0, 0, 0, 2, 8, 0],
                  [0, 0, 0, 4, 1, 9, 0, 0, 5],
                  [0, 0, 0, 0, 8, 0, 0, 7, 9]
              ]
              
              if solve_sudoku(board):
                  print("Solution:")
                  print_board(board)
              else:
                  print("No solution exists.")
              
              

              וזה נתן לי בארד יש לו 3 טיוטות בכולם הוא נתן מקורות מאתר github לפיתרון שלהלן הוא נתן את הקישור הבא https://github.com/Zelkann/Sudoku-Solver-with-Backtracking-Algorithm

              def solve_sudoku(board):
                """Solve a Sudoku puzzle using backtracking.
              
                Args:
                  board: A 9x9 array of integers, where 0 represents an empty cell.
              
                Returns:
                  A solved Sudoku puzzle.
                """
              
                def find_empty_cell(board):
                  for row in range(9):
                    for col in range(9):
                      if board[row][col] == 0:
                        return row, col
                  return None
              
                def is_valid(board, row, col, num):
                  # Check if num is valid in the current row.
                  for i in range(9):
                    if board[row][i] == num:
                      return False
              
                  # Check if num is valid in the current column.
                  for j in range(9):
                    if board[j][col] == num:
                      return False
              
                  # Check if num is valid in the current 3x3 block.
                  block_row = (row // 3) * 3
                  block_col = (col // 3) * 3
                  for i in range(3):
                    for j in range(3):
                      if board[block_row + i][block_col + j] == num:
                        return False
              
                  return True
              
                def solve_recursive(board):
                  # Find the next empty cell.
                  row, col = find_empty_cell(board)
                  if row is None:
                    # The puzzle is solved.
                    return True
              
                  # Try all possible numbers for the empty cell.
                  for num in range(1, 10):
                    if is_valid(board, row, col, num):
                      board[row][col] = num
                      if solve_recursive(board):
                        return True
              
                  # The current number did not work, so reset the cell to 0.
                  board[row][col] = 0
                  return False
              
                # Start the recursive solver.
                solve_recursive(board)
                return board
              
              
              פ תגובה 1 תגובה אחרונה
              0
              • א אלי ויל

                @פייתוניסט כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                יש לי אפשרות לשאלה אחת ביום לGPT 4

                איך קיבלת?

                אינני מבין תיכנות אבל זה מה שנתן לי החינמי
                .

                def solve_sudoku(board):
                    if not find_empty_cell(board):
                        return True
                
                    row, col = find_empty_cell(board)
                    for num in range(1, 10):
                        if is_valid(board, row, col, num):
                            board[row][col] = num
                
                            if solve_sudoku(board):
                                return True
                
                            board[row][col] = 0
                
                    return False
                
                
                def is_valid(board, row, col, num):
                    # Check row
                    for i in range(9):
                        if board[row][i] == num:
                            return False
                
                    # Check column
                    for i in range(9):
                        if board[i][col] == num:
                            return False
                
                    # Check 3x3 box
                    start_row = (row // 3) * 3
                    start_col = (col // 3) * 3
                    for i in range(3):
                        for j in range(3):
                            if board[start_row + i][start_col + j] == num:
                                return False
                
                    return True
                
                
                def find_empty_cell(board):
                    for i in range(9):
                        for j in range(9):
                            if board[i][j] == 0:
                                return i, j
                    return None
                
                
                def print_board(board):
                    for i in range(9):
                        for j in range(9):
                            print(board[i][j], end=' ')
                        print()
                
                
                # Example Sudoku board (0 represents empty cells)
                board = [
                    [5, 3, 0, 0, 7, 0, 0, 0, 0],
                    [6, 0, 0, 1, 9, 5, 0, 0, 0],
                    [0, 9, 8, 0, 0, 0, 0, 6, 0],
                    [8, 0, 0, 0, 6, 0, 0, 0, 3],
                    [4, 0, 0, 8, 0, 3, 0, 0, 1],
                    [7, 0, 0, 0, 2, 0, 0, 0, 6],
                    [0, 6, 0, 0, 0, 0, 2, 8, 0],
                    [0, 0, 0, 4, 1, 9, 0, 0, 5],
                    [0, 0, 0, 0, 8, 0, 0, 7, 9]
                ]
                
                if solve_sudoku(board):
                    print("Solution:")
                    print_board(board)
                else:
                    print("No solution exists.")
                
                

                וזה נתן לי בארד יש לו 3 טיוטות בכולם הוא נתן מקורות מאתר github לפיתרון שלהלן הוא נתן את הקישור הבא https://github.com/Zelkann/Sudoku-Solver-with-Backtracking-Algorithm

                def solve_sudoku(board):
                  """Solve a Sudoku puzzle using backtracking.
                
                  Args:
                    board: A 9x9 array of integers, where 0 represents an empty cell.
                
                  Returns:
                    A solved Sudoku puzzle.
                  """
                
                  def find_empty_cell(board):
                    for row in range(9):
                      for col in range(9):
                        if board[row][col] == 0:
                          return row, col
                    return None
                
                  def is_valid(board, row, col, num):
                    # Check if num is valid in the current row.
                    for i in range(9):
                      if board[row][i] == num:
                        return False
                
                    # Check if num is valid in the current column.
                    for j in range(9):
                      if board[j][col] == num:
                        return False
                
                    # Check if num is valid in the current 3x3 block.
                    block_row = (row // 3) * 3
                    block_col = (col // 3) * 3
                    for i in range(3):
                      for j in range(3):
                        if board[block_row + i][block_col + j] == num:
                          return False
                
                    return True
                
                  def solve_recursive(board):
                    # Find the next empty cell.
                    row, col = find_empty_cell(board)
                    if row is None:
                      # The puzzle is solved.
                      return True
                
                    # Try all possible numbers for the empty cell.
                    for num in range(1, 10):
                      if is_valid(board, row, col, num):
                        board[row][col] = num
                        if solve_recursive(board):
                          return True
                
                    # The current number did not work, so reset the cell to 0.
                    board[row][col] = 0
                    return False
                
                  # Start the recursive solver.
                  solve_recursive(board)
                  return board
                
                
                פ מנותק
                פ מנותק
                פייתוניסט
                כתב ב נערך לאחרונה על ידי
                #7

                @אלי-ויל

                @אלי-ויל כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                איך קיבלת?

                זה בחינם

                ולגבי הסקריפטים האחרים הראשון הרבה יותר גרוע והשני הוא רק פונקציה ללא מימוש והדפסה והיא יחסית ארוכה כך שבנתיים אין מתחרים לGPT 4

                פ תגובה 1 תגובה אחרונה
                0
                • פ פייתוניסט

                  @GIGA

                  @GIGA כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                  הוא לא משתמש ברקורסיה

                  הוא דווקא כן משתמש ברקורסיה בפונקציה solve_sudoku אבל למה לא?

                  @GIGA כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                  מה שחשוב זה שאם הקוד לא מוצא קצת חן בעיניך, אתה מבקש מGPT תיקונים והוא מבצע תוך שניות, מה שאי אפשר לומר על אתר תכנות כזה או אחר.

                  יש לי אפשרות לשאלה אחת ביום לGPT 4

                  G מנותק
                  G מנותק
                  GIGA
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @פייתוניסט

                  @פייתוניסט כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                  הוא דווקא כן משתמש ברקורסיה בפונקציה solve_sudoku

                  נכון! סליחה...
                  עברתי מלמעלה והיה נראה לי שהוא הרוויח בלולאות הfor המקוננות קצת סיבוכיות, אבל עכשיו אני רואה שיש לשניהם אותה סיבוכיות(N^2).
                  אז מה הרווח? אולי יותר אינטואיבי?

                  @פייתוניסט כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                  מה שחשוב זה שאם הקוד לא מוצא קצת חן בעיניך, אתה מבקש מGPT תיקונים והוא מבצע תוך שניות, מה שאי אפשר לומר על אתר תכנות כזה או אחר.

                  יש לי אפשרות לשאלה אחת ביום לGPT 4

                  בסדר, אולי לא רלוונטי לך, אבל למי שמשלם יש את היתרון הזה. אתה יכול להשתמש בChatGPT כדי לשפר דברים בקוד וזה ממש מצוין.

                  תגובה 1 תגובה אחרונה
                  0
                  • פ פייתוניסט

                    @אלי-ויל

                    @אלי-ויל כתב בסקריפט פותר סודוקו | גאונותו של GPT 4:

                    איך קיבלת?

                    זה בחינם

                    ולגבי הסקריפטים האחרים הראשון הרבה יותר גרוע והשני הוא רק פונקציה ללא מימוש והדפסה והיא יחסית ארוכה כך שבנתיים אין מתחרים לGPT 4

                    פ מנותק
                    פ מנותק
                    פקז
                    כתב ב נערך לאחרונה על ידי
                    #9

                    @פייתוניסט אבל זה לא gpt 4
                    Screenshot_2023-05-16-10-18-26-493_com.android.chrome.jpg

                    פ תגובה 1 תגובה אחרונה
                    0
                    • פ פקז

                      @פייתוניסט אבל זה לא gpt 4
                      Screenshot_2023-05-16-10-18-26-493_com.android.chrome.jpg

                      פ מנותק
                      פ מנותק
                      פייתוניסט
                      כתב ב נערך לאחרונה על ידי פייתוניסט
                      #10

                      @פקז תסתכל בצד (במחשב אבל אתה בטלפון אז תלחץ על הפסים נראה לי):
                      Screenshot 2023-05-16 133440.png

                      תגובה 1 תגובה אחרונה
                      1
                      • א איסתרק השלישי התייחס לנושא זה ב

                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • חוקי הפורום
                      • לא נפתר
                      • משתמשים
                      • חיפוש גוגל בפורום
                      • צור קשר