Buckets:
MisterAI/LocalAI_Demo_backends / cpu-diffusers.upgrade-tmp /python /lib /python3.10 /turtledemo /minimal_hanoi.py
| #!/usr/bin/env python3 | |
| """ turtle-example-suite: | |
| tdemo_minimal_hanoi.py | |
| A minimal 'Towers of Hanoi' animation: | |
| A tower of 6 discs is transferred from the | |
| left to the right peg. | |
| An imho quite elegant and concise | |
| implementation using a tower class, which | |
| is derived from the built-in type list. | |
| Discs are turtles with shape "square", but | |
| stretched to rectangles by shapesize() | |
| --------------------------------------- | |
| To exit press STOP button | |
| --------------------------------------- | |
| """ | |
| from turtle import * | |
| class Disc(Turtle): | |
| def __init__(self, n): | |
| Turtle.__init__(self, shape="square", visible=False) | |
| self.pu() | |
| self.shapesize(1.5, n*1.5, 2) # square-->rectangle | |
| self.fillcolor(n/6., 0, 1-n/6.) | |
| self.st() | |
| class Tower(list): | |
| "Hanoi tower, a subclass of built-in type list" | |
| def __init__(self, x): | |
| "create an empty tower. x is x-position of peg" | |
| self.x = x | |
| def push(self, d): | |
| d.setx(self.x) | |
| d.sety(-150+34*len(self)) | |
| self.append(d) | |
| def pop(self): | |
| d = list.pop(self) | |
| d.sety(150) | |
| return d | |
| def hanoi(n, from_, with_, to_): | |
| if n > 0: | |
| hanoi(n-1, from_, to_, with_) | |
| to_.push(from_.pop()) | |
| hanoi(n-1, with_, from_, to_) | |
| def play(): | |
| onkey(None,"space") | |
| clear() | |
| try: | |
| hanoi(6, t1, t2, t3) | |
| write("press STOP button to exit", | |
| align="center", font=("Courier", 16, "bold")) | |
| except Terminator: | |
| pass # turtledemo user pressed STOP | |
| def main(): | |
| global t1, t2, t3 | |
| ht(); penup(); goto(0, -225) # writer turtle | |
| t1 = Tower(-250) | |
| t2 = Tower(0) | |
| t3 = Tower(250) | |
| # make tower of 6 discs | |
| for i in range(6,0,-1): | |
| t1.push(Disc(i)) | |
| # prepare spartanic user interface ;-) | |
| write("press spacebar to start game", | |
| align="center", font=("Courier", 16, "bold")) | |
| onkey(play, "space") | |
| listen() | |
| return "EVENTLOOP" | |
| if __name__=="__main__": | |
| msg = main() | |
| print(msg) | |
| mainloop() | |
Xet Storage Details
- Size:
- 2.05 kB
- Xet hash:
- 5c48e2b5788bae0502c33a54ef0aac74c01b6c2de519c98e67104d6aa2b58200
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.