続・格子点の数え上げ
id:ocs:20050622の続き。
とりあえず全部計算してから、距離の短い順に並び替えるスクリプトを書いてみた。r は適当な半径。
r = 5 lattices = [(x**2 + y**2, x, y) for x in range(1, r) \ for y in range(1, r) if x**2 + y**2 < r**2] lattices.sort() for x in lattices: print x
シンプルはシンプル。r = 1000 で実行しても 2 分程度だったので、まぁ割と速いかな?
Python のリストは良くできてるなぁ。あとで同じことを Ruby あたりにやらせてみるか。