Advertisement
Guest User

M0Hresizable.py

a guest
Sep 2nd, 2023
633
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.59 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import Canvas, Scrollbar
  3.  
  4. # Global variables
  5. matrix_data = []  # List to store matrix data
  6. current_matrix = 0  # Index of the currently displayed matrix
  7. matrix_size = 100  # Default size of the matrix
  8.  
  9. def generate_matrix():
  10.     start_num = int(start_entry.get())
  11.     end_num = int(end_entry.get())
  12.     count_matrix = [[0 for _ in range(matrix_size)] for _ in range(matrix_size)]  # Initialize with 0 instead of "X"
  13.  
  14.     for row in range(matrix_size):
  15.         for col in range(matrix_size):
  16.             value = start_num + row * matrix_size + col
  17.             if value <= end_num:
  18.                 count_matrix[row][col] = count_possible_A(value)
  19.  
  20.     matrix_data.append((start_num, end_num, count_matrix))  # Store the generated matrix in the list
  21.     update_matrix(count_matrix)
  22.  
  23.    
  24. def count_possible_A(num):
  25.     B = str(num)
  26.     n = len(B)
  27.     dp = [[1] * 10 for _ in range(n + 1)]
  28.  
  29.     for i in range(1, n + 1):
  30.         bdigit = int(B[i - 1])
  31.         for j in range(10):
  32.             dp[i][j] = 0
  33.             if j - bdigit >= 0:
  34.                 dp[i][j] += dp[i - 1][j - bdigit]
  35.             if j + bdigit <= 9 and bdigit != 0:
  36.                 dp[i][j] += dp[i - 1][j + bdigit]
  37.  
  38.     count = sum(dp[n])
  39.     return count
  40.  
  41. def update_matrix(count_matrix):
  42.     highlighted_count = 0  # Variable to store the count of highlighted cells
  43.     for row in range(matrix_size):
  44.         for col in range(matrix_size):
  45.             label = matrix_labels[row][col]
  46.             number = count_matrix[row][col] // 2  # Divide the number by 2
  47.             if number % 2 == 0:  # Highlight the even numbers
  48.                 label.config(bg="lightblue")
  49.                 highlighted_count += 1
  50.             else:
  51.                 label.config(bg="white")
  52.             label.config(text="")  # Make the numbers in the matrix invisible
  53.  
  54.     # Show the count of highlighted cells
  55.     count_label.config(text=f"Highlighted Cells: {highlighted_count}")
  56.  
  57.  
  58. # GUI setup
  59. root = tk.Tk()
  60. root.title("Count Matrix")
  61. root.geometry("800x600")
  62.  
  63. # Input frame
  64. input_frame = tk.Frame(root)
  65. input_frame.pack(pady=10)
  66.  
  67. start_label = tk.Label(input_frame, text="Start Number:")
  68. start_label.grid(row=0, column=0, padx=5)
  69. start_entry = tk.Entry(input_frame)
  70. start_entry.grid(row=0, column=1, padx=5)
  71.  
  72. end_label = tk.Label(input_frame, text="End Number:")
  73. end_label.grid(row=1, column=0, padx=5)
  74. end_entry = tk.Entry(input_frame)
  75. end_entry.grid(row=1, column=1, padx=5)
  76.  
  77. generate_button = tk.Button(root, text="Generate Matrix", command=generate_matrix)
  78. generate_button.pack()
  79.  
  80. # Canvas for matrix frame
  81. matrix_canvas = Canvas(root)
  82. matrix_canvas.pack(fill=tk.BOTH, expand=True)
  83.  
  84. # Add a horizontal scrollbar
  85. x_scrollbar = Scrollbar(root, orient=tk.HORIZONTAL, command=matrix_canvas.xview)
  86. x_scrollbar.pack(side=tk.BOTTOM, fill=tk.X)
  87. matrix_canvas.configure(xscrollcommand=x_scrollbar.set)
  88.  
  89. # Add a vertical scrollbar
  90. y_scrollbar = Scrollbar(root, orient=tk.VERTICAL, command=matrix_canvas.yview)
  91. y_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
  92. matrix_canvas.configure(yscrollcommand=y_scrollbar.set)
  93.  
  94. # Matrix frame inside the canvas
  95. matrix_frame = tk.Frame(matrix_canvas)
  96. matrix_canvas.create_window((0, 0), window=matrix_frame, anchor=tk.NW)
  97.  
  98. matrix_labels = []
  99. for row in range(matrix_size):
  100.     label_row = []
  101.     for col in range(matrix_size):
  102.         label = tk.Label(matrix_frame, text="X", width=2, height=1, relief=tk.RIDGE)
  103.         label.grid(row=row, column=col, padx=0, pady=0)
  104.         label_row.append(label)
  105.     matrix_labels.append(label_row)
  106.  
  107. # Count label
  108. count_label = tk.Label(root, text="Highlighted Cells: 0", font=("Helvetica", 14))
  109. count_label.pack()
  110.  
  111. root.mainloop()
  112.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement