import tkinter as tk
from tkinter import messagebox

def collatz(n):
    """Function to compute the Collatz sequence."""
    sequence = [n]
    while n != 1:
        if n % 2 == 0:  # Even number
            n = n // 2
        else:  # Odd number
            n = 3 * n + 1
        sequence.append(n)
    return sequence

def calculate_collatz():
    """Function to process input and display results."""
    try:
        start_num = int(entry.get())
        if start_num <= 0:
            messagebox.showerror("Error", "Please enter a positive integer!")
            return
        
        # Sequence calculation
        result = collatz(start_num)
        
        # Display results
        sequence_text.delete(1.0, tk.END)  # Clear text field
        sequence_text.insert(tk.END, ", ".join(map(str, result)))
        
        steps_label.config(text=f"Number of steps: {len(result) - 1}")
        max_label.config(text=f"Maximum value: {max(result)}")
        
    except ValueError:
        messagebox.showerror("Error", "Please enter a valid integer!")

# Main window
root = tk.Tk()
root.title("Collatz Sequence")
root.geometry("500x400")

# Entry input
tk.Label(root, text="Enter starting number:").pack(pady=5)
entry = tk.Entry(root)
entry.pack(pady=5)

# Calculate button
tk.Button(root, text="Calculate", command=calculate_collatz).pack(pady=10)

# Text field for sequence display
tk.Label(root, text="Sequence:").pack()
sequence_text = tk.Text(root, height=5, width=50)
sequence_text.pack(pady=5)

# Label for step count and maximum value
steps_label = tk.Label(root, text="Number of steps: -")
steps_label.pack(pady=5)
max_label = tk.Label(root, text="Maximum value: -")
max_label.pack(pady=5)

# Mainloop
root.mainloop()