Hacker's Delight 2nd Edition 中的算法
移植到python
一个简单的希尔伯特曲线类。
class Hilbert():
def __init__(self,order=1):
self.x = -1
self.y = 0
self._step(0)
self._hil(0, 1, order)
def _hil(self, dirs, rot, order):
if (order == 0):
return
dirs += rot
self._hil(dirs, -rot, (order-1))
self._step(dirs)
dirs -= rot
self._hil(dirs, rot, (order-1))
self._step(dirs)
self._hil(dirs, rot, (order-1))
dirs -= rot
self._step(dirs)
self._hil(dirs, -rot, (order-1))
def _step(self, dirs):
dirs %= 4
if dirs == 0:
self.x += 1
elif dirs == 1:
self.y += 1
elif dirs == 2:
self.x -= 1
else:
self.y -= 1
#prints all points
#print(self.x,self.y)
#Could I "iterate" from here.
所以我想要的是每次调用 next() 时都会给出 (x,y) 的东西。我自己尝试过这样做,但无法使其正常工作,因此将不胜感激。我是否必须重写它才能使用生成器? 资源