Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import tkinter as tk
- from tkinter import Canvas, Scrollbar
- # Global variables
- matrix_data = [] # List to store matrix data
- current_matrix = 0 # Index of the currently displayed matrix
- matrix_size = 100 # Default size of the matrix
- def generate_matrix():
- start_num = int(start_entry.get())
- end_num = int(end_entry.get())
- count_matrix = [[0 for _ in range(matrix_size)] for _ in range(matrix_size)] # Initialize with 0 instead of "X"
- for row in range(matrix_size):
- for col in range(matrix_size):
- value = start_num + row * matrix_size + col
- if value <= end_num:
- count_matrix[row][col] = count_possible_A(value)
- matrix_data.append((start_num, end_num, count_matrix)) # Store the generated matrix in the list
- update_matrix(count_matrix)
- def count_possible_A(num):
- B = str(num)
- n = len(B)
- dp = [[1] * 10 for _ in range(n + 1)]
- for i in range(1, n + 1):
- bdigit = int(B[i - 1])
- for j in range(10):
- dp[i][j] = 0
- if j - bdigit >= 0:
- dp[i][j] += dp[i - 1][j - bdigit]
- if j + bdigit <= 9 and bdigit != 0:
- dp[i][j] += dp[i - 1][j + bdigit]
- count = sum(dp[n])
- return count
- def update_matrix(count_matrix):
- highlighted_count = 0 # Variable to store the count of highlighted cells
- for row in range(matrix_size):
- for col in range(matrix_size):
- label = matrix_labels[row][col]
- number = count_matrix[row][col] // 2 # Divide the number by 2
- if number % 2 == 0: # Highlight the even numbers
- label.config(bg="lightblue")
- highlighted_count += 1
- else:
- label.config(bg="white")
- label.config(text="") # Make the numbers in the matrix invisible
- # Show the count of highlighted cells
- count_label.config(text=f"Highlighted Cells: {highlighted_count}")
- # GUI setup
- root = tk.Tk()
- root.title("Count Matrix")
- root.geometry("800x600")
- # Input frame
- input_frame = tk.Frame(root)
- input_frame.pack(pady=10)
- start_label = tk.Label(input_frame, text="Start Number:")
- start_label.grid(row=0, column=0, padx=5)
- start_entry = tk.Entry(input_frame)
- start_entry.grid(row=0, column=1, padx=5)
- end_label = tk.Label(input_frame, text="End Number:")
- end_label.grid(row=1, column=0, padx=5)
- end_entry = tk.Entry(input_frame)
- end_entry.grid(row=1, column=1, padx=5)
- generate_button = tk.Button(root, text="Generate Matrix", command=generate_matrix)
- generate_button.pack()
- # Canvas for matrix frame
- matrix_canvas = Canvas(root)
- matrix_canvas.pack(fill=tk.BOTH, expand=True)
- # Add a horizontal scrollbar
- x_scrollbar = Scrollbar(root, orient=tk.HORIZONTAL, command=matrix_canvas.xview)
- x_scrollbar.pack(side=tk.BOTTOM, fill=tk.X)
- matrix_canvas.configure(xscrollcommand=x_scrollbar.set)
- # Add a vertical scrollbar
- y_scrollbar = Scrollbar(root, orient=tk.VERTICAL, command=matrix_canvas.yview)
- y_scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
- matrix_canvas.configure(yscrollcommand=y_scrollbar.set)
- # Matrix frame inside the canvas
- matrix_frame = tk.Frame(matrix_canvas)
- matrix_canvas.create_window((0, 0), window=matrix_frame, anchor=tk.NW)
- matrix_labels = []
- for row in range(matrix_size):
- label_row = []
- for col in range(matrix_size):
- label = tk.Label(matrix_frame, text="X", width=2, height=1, relief=tk.RIDGE)
- label.grid(row=row, column=col, padx=0, pady=0)
- label_row.append(label)
- matrix_labels.append(label_row)
- # Count label
- count_label = tk.Label(root, text="Highlighted Cells: 0", font=("Helvetica", 14))
- count_label.pack()
- root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement