プログラマたるもの、暇な時はアルゴリズムとデータ構造で時間を潰すべきと言えよう。
ということで、Pythonでキューを作ってみた。
プログラマたるもの、キューくらいサクッと書けないといけないね。
class OresamaQueue(object): def __init__(self): self._buffer = [] def dequeue(self): if len(self._buffer) > 0: return self._buffer.pop() else: return None def enqueue(self, obj): self._buffer = [obj] + self._buffer
解説するとこもないくらい単純なキューの実装だ。
Pythonのリストにはリストの末尾を削除しつつその値を返してくれるpop()というステキメソッドがあるので、dequeueは楽勝で書けた。
enqueueもPythonではリスト同士を足し合わせると1つのリストに合体してくれるので、[obj]で受け取った値を配列にして既存の配列と足し算しちまえばいい。
テストをしよう。手動で。
>>> import OresamaQueue >>> q = OresamaQueue() >>> q.enqueue(1) >>> q.enqueue(2) >>> q.enqueue(3) >>> q.dequeue() 1 >>> q.dequeue() 2 >>> q.dequeue() 3 >>> q.dequeue() >>> q.dequeue() is None True
うん、見事なまでの先入れ先出し、まごうことないキュー。
ま、Pythonには最初からQueueモジュールがあるので、そっち使えばいいんだけどね。