2006-10-01から1ヶ月間の記事一覧

タグ付けという考え方

以前はハッシュの本質は「分割して検索範囲を減らす」ことにあると思っていた。これはその通りであると思うが、別の見方をしてみると、「タグ付け」がハッシュ(というデータ構造)のアルゴリズムの本質であると思う。 タグ付けとは、すなわち、ある複数のオブ…

シーケンスの一部をシーケンスのコピーを作らずにビルトイン関数に渡す方法(続き)

# -*- coding: utf-8 -*- class Slicer(): def __init__(self, seq, st, ed): self.seq = seq self.st = st self.ed = ed def __getitem__(self, idx): return self.seq[self.st + idx] def __setslice__(self, start, end, sub): self.seq[self.st:self.ed]…

シーケンスの一部をシーケンスのコピーを作らずにビルトイン関数に渡す方法

まだ自己解決していないが、問題提起だけ再度まとめておく。リストや文字列などのシーケンスの一部をビルトイン関数(やビルトインクラスのメソッド)、例えば、reversed()やcmp()などの引数やオブジェクトとして使用する場合、新たなインスタンスを作らないと…

reverse()メソッドの問題点

list.reverse()は破壊的メソッドなので、新しいインスタンスを作らずにリストの一部を反転したい場合はどうすれば良いのだろう? やっと「みんPy」を読み終わり、「珠玉のプログラミング」を読み始めたのだが、かなりの良書。その中で、文字列やリストの初め…

Calendar問題

Calendar問題をまともに解いた。曜日計算は以下のサイトを参考にした。 http://cl.is.kyushu-u.ac.jp/Literacy/PP/H14/adp/program/date.html 曜日計算にはツェラーの公式を使うらしいが、1、2月の場合調整が必要となる。この調整は書いてないサイトもあるが…

Prime Factors問題

とりあえず、'Prime Factors'問題は解けた。結局アルゴリズムの問題だった。奥村晴彦先生の「Javaによるアルゴリズム辞典」を参考にした。ポイントとしては、Brute force(総当りのチェック)ではダメで、(有名な)アルゴリズムにより計算量を減らすということ…

何らかの知識が足りない

'Prime Factors'問題と'Brainfuck'問題は、最後のRunがTime outになってしまいパスしない。アルゴリズムやロジックの問題と言うよりスピードの最適化に関する私自身の知識が何か欠けている気がしてならない。例えば、ループやデータ構造の効率良い(NumPyみた…

気になった書籍

最近、あるブログを読んでいて以下の書籍が気になった。 「ソフトウェアエンジニアリング論文集80's~デマルコ・セレクション」 http://www.amazon.co.jp/gp/product/4798110612/ref=sr_11_1/250-8382914-9906617?ie=UTF8 内容はまだ分からないが、機会があっ…

Code GolfのNewsのところで、hashlibやcalendarなどのPythonのモジュールを使うの禁止ということになった。情報をレポートしてくれた人ありがとうみたいなことが書いてあって、何か不正をしたみたいな扱いでちょっとショック。 Pythonが完全に不利だが、Ruby…

いつの間にかCalendar問題で、8位に落ちていた。自分より上位の人はみんなPython。総合1位もjojoさんと、shinhさんでデッドヒートを繰り広げていたのに、現在の1位はmameさん。順位が入れ替わるのは時間の問題。 参加人数はトータルでは315人なので人数は…

Code GolfのCalendar問題で昨日Pythonで1位をとったのに今日になって3位になっていた。アイデアを真似されたっぽくてちょっとショック。総合1位のjojoさんもPython使ってるし…。Mark Byersさんは、Pythonで結構上位に来ているのに正攻法で解いている感じ…

k.inabaさんの日記を見ていてCode Golfというのを知って面白そうだったのでPythonでチャレンジしてみた。とりあえず、'Oblongular Number Spirals'と'99 Bottles Of Beer'にチャレンジした。 上位の人にRubyで負けるのは分かるが、Pythonで負けているのは悔…

IronPython 1.0

今日、IronPython 1.0を入れて以前仕事で作成したPythonのアプリの時間を計測したら、CPythonが33.78秒で、IronPythonが80.17秒だった。IronPythonの方が数倍早いと聞いていたが、コードの内容によって違うようである。IronPythonの使い道をまだ見出せてない…

データ構造に関して

一般に同種のデータを複数扱う場合、通常以下の2通りのデータ構造が考えられる。 個数分ループで回して1つずつ扱う、つまり1つのみのデータ構造を使いまわす 1つ分のデータ構造を個数分用意する 後者の方法だと配列やリスト(あるいは、ハッシュなど)のデータ…