here2share

# tk_recaman.py

Nov 9th, 2025
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.03 KB | None | 0 0
  1. # tk_recaman.py
  2.  
  3. from tkinter import *
  4. import math
  5.  
  6. w = 1200
  7. h = 600
  8. span = 5
  9.  
  10. root = Tk()
  11. root.geometry("+0+0")
  12.  
  13. frame = Frame(root)
  14. frame.pack(fill=BOTH, expand=True)
  15.  
  16. h_scroll = Scrollbar(frame, orient=HORIZONTAL)
  17. h_scroll.pack(side=BOTTOM, fill=X)
  18.  
  19. c = Canvas(frame, width=w, height=h, xscrollcommand=h_scroll.set, bg='white')
  20. c.pack(side=LEFT, fill=BOTH, expand=True)
  21. h_scroll.config(command=c.xview)
  22.  
  23. used = {0}
  24. current = 0
  25. n = 0
  26. y = h // 2
  27.  
  28. cv_w = w
  29.  
  30. def recaman():
  31.     global n, current, cv_w
  32.  
  33.     prev = current
  34.     candidate = current - n
  35.     if candidate > 0 and candidate not in used:
  36.         current = candidate
  37.     else:
  38.         current = current + n
  39.     used.add(current)
  40.  
  41.     r = abs(current - prev) * 2.5
  42.     x1 = min(prev, current) * span
  43.     x2 = max(prev, current) * span
  44.    
  45.     s = 0
  46.     if n % 2:
  47.         s = 180
  48.    
  49.     c.create_arc(x1, y - r, x2, y + r, start=s, extent=180, style='arc')
  50.  
  51.     cv_w = max(cv_w, current * span)
  52.     c.config(scrollregion=(0, 0, (cv_w), h))
  53.  
  54.     n += 1
  55.     root.after(500, recaman)
  56.  
  57. recaman()
  58. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment