Advertisement
Guest User

S(B)_and_N(B)_i-j_copy.py

a guest
May 13th, 2023
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.70 KB | None | 0 0
  1. import tkinter as tk
  2. import tkinter.messagebox as messagebox
  3.  
  4. def generate_S_N():
  5.     results_text.delete("1.0", tk.END)  # Clear previous results
  6.     start_num = int(start_entry.get())
  7.     end_num = int(end_entry.get())
  8.  
  9.     if start_num > end_num:
  10.         messagebox.showwarning("Invalid Range", "The start number cannot be greater than the end number.")
  11.         return
  12.  
  13.     for n in range(start_num, end_num + 1):
  14.         B = str(n)
  15.         n_digits = len(B)
  16.         B_digits = [int(digit) for digit in B]
  17.         possible_A = find_possible_A(B_digits)
  18.         num_elements = len(possible_A)
  19.         sum_A = sum(possible_A)
  20.         result_str = f"For B = {B}, S({B}) = {sum_A}, N({B}) = {num_elements}"
  21.         results_text.insert(tk.END, result_str + "\n")
  22.  
  23. def find_possible_A(B_digits):
  24.     n = len(B_digits)
  25.     possible_A = []
  26.     for i in range(10**(n+1)):
  27.         A_digits = [int(digit) for digit in str(i).zfill(n+1)]  # Convert i to a list of digits
  28.         conditions_met = True
  29.         for j in range(n):
  30.             if abs(A_digits[j+1] - A_digits[j]) != B_digits[j]:
  31.                 conditions_met = False
  32.                 break
  33.         if conditions_met:
  34.             possible_A.append(i)
  35.     return possible_A
  36.  
  37. def copy_results():
  38.     results = results_text.get("1.0", tk.END)
  39.     if results:
  40.         window.clipboard_clear()
  41.         window.clipboard_append(results)
  42.         messagebox.showinfo("Results Copied", "The results have been copied to the clipboard.")
  43.     else:
  44.         messagebox.showwarning("No Results", "No results to copy.")
  45.  
  46. def clear_results():
  47.     results_text.delete("1.0", tk.END)
  48.  
  49. # Create the main window
  50. window = tk.Tk()
  51. window.title("Sum and Count of Outputs")
  52.  
  53. # Create entry labels and input boxes
  54. entry_frame = tk.Frame(window)
  55. entry_frame.pack(pady=10)
  56. start_label = tk.Label(entry_frame, text="Start Number:")
  57. start_label.grid(row=0, column=0, padx=5)
  58. start_entry = tk.Entry(entry_frame)
  59. start_entry.grid(row=0, column=1, padx=5)
  60. end_label = tk.Label(entry_frame, text="End Number:")
  61. end_label.grid(row=1, column=0, padx=5)
  62. end_entry = tk.Entry(entry_frame)
  63. end_entry.grid(row=1, column=1, padx=5)
  64.  
  65. # Create generate, copy, and clear buttons
  66. button_frame = tk.Frame(window)
  67. button_frame.pack(pady=10)
  68. generate_button = tk.Button(button_frame, text="Generate", command=generate_S_N)
  69. generate_button.grid(row=0, column=0, padx=5)
  70. copy_button = tk.Button(button_frame, text="Copy Results", command=copy_results)
  71. copy_button.grid(row=0, column=1, padx=5)
  72. clear_button = tk.Button(button_frame, text="Clear Results", command=clear_results)
  73. clear_button.grid(row=0, column=2, padx=5)
  74.  
  75. # Create text area to display results
  76. results_text = tk.Text(window, width=50, height=10)
  77. results_text.pack()
  78.  
  79. # Run the GUI
  80. window.mainloop()
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement