16章 計算幾何学
『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』再開します
どこまでいったんだかすっかり忘却の彼方
15章は終わったのかな
じゃあ「16章 計算幾何学」から
計算機科学と紛らわしいな
少なくとも途中までは高校の数学みたいな感じ
問題を解くためのアルゴリズムを実装するためには、幾何学的なオブジェクト
(点や線分など)に対する基本的な操作を行うための細かい部品を集めた、
いわゆるライブラリを用意する必要があります。
このへんからやっていこう
Pythonだと最初から用意されてるかも、と思ったけどぱっと見はなさげ
Point型はまずこう
class Point():
def __init__(self, x=0.0, y=0.0):
self.x = x
self.y = y
それはいいとして、
typedef Point Vector;
はPythonだとどう書くんだ
考えてみるとそういうのなんかあったっけ?
こうかな?
class Vector(Point):
pass
大丈夫そう
もしかしてこれでも動くか?
Vector = Point
動いてるみたい
なんとなくこっちの方が効率よさそうな気がするけど
typedef vector<Point> Polygon;
は
Polygon = list
でいいんだろうか
>>> Polygon = list
>>> p = Polygon()
>>> p.append(1)
>>> p.append(2)
>>> print(p)
[1, 2]
動いてなくもないみたいだけどあやしい気もするなあ
class Polygon(list):
pass
だと怪しくないかっていうとそうでもない気がするけど
あとでメソッド追加しそうだからこの方がいいか
ちょっと調べたほうがいいかもな