Python

rangeとxrangeってどれくらい違うの? -timeitを試す-

30分プログラム、その440。timeitというステキな時間計測モジュールを見つけたので、rangeとxrangeの速度を比べてみた。 実際に走らせるコードを文字列で与えるのがなんとも。まあ、キャッシュとかが効かないようにするためなんだろうけども。 使い方 $ pyth…

終了コードを反転させるプログラム

30分プログラム、その434。終了コードを反転させるプログラムを書いてみた。今、書いてるプログラムの単体テストの結果が長すぎるので、grepで必要な情報だけ取り出している。 ./test/runner | grep FAIL でも、これだと失敗したときの終了コードが0で、成功…

アルファベットの循環表示

30分プログラム、その428。ネタに困ったので、ソーシャル・ネットワーキング サービス [mixi(ミクシィ)](mixi)C/C++の課題丸投げコミュの問題でも解く。 http://mixi.jp/view_bbs.pl?id=37502259&comm_id=602606度々失礼します どのようにすれば、こんな感じ…

"seq a z"でaからzを生成するコマンド

30分プログラム、その422。"seq a z"でaからzを生成するコマンド。 前にseqに感動したので、わりとよく使っている。いちばん使うのがダミーファイルの生成なんだけど、ダミーファイルが数字だけというのはちょっと読みづらい。 というわけで、seqの文字版。…

seqコマンドをPythonで。

30分プログラム、その416。seqコマンドをPythonで。 id:Gemmanさんがステキなコマンドを使っていたので、Pythonで再現してみる。 使い方 # 指定しないと1が始点 $ ./seq.py 5 1 2 3 4 5 # 2からスタート $ ./seq.py 2 5 2 3 4 5 # 2づつインクリメント $ ./s…

unzipの一般化

30分プログラム、その410。http://d.hatena.ne.jp/hiloicoli/20081107/1226086092に影響を受けてunzip_nを書いてみる。要するに任意個の引数を取れるunzipといった感じらしい。もとは引数の数を制限できるようになっていたけど、大変そうなのでパス。 >>> un…

lim[n→∞]√2↑↑n=2

id:athos:20081028:p1 g:csnagoya-sicp:id:Gemma:20081029 g:csnagoya-sicp:id:Gemma:2008103030分プログラム、その403。なんとなくボクも参加しないといけない気がしたので、書いてみる。 げんまさんが無限ストリームで計算してたので、ボクはPythonのイテ…

mixiの課題丸投げをひたすら解く、Pythonで(2)

30分プログラム、その396。mixiの(mixi)C/C++の課題丸投げコミュニティにある問題をひたすら解いてみる。ただし、Pythonで。 割と無茶な丸投げがおおい。「論理式をパースして実行するプログラムを書いてください」とか「形態素解析をしてください」とかでき…

mixiの課題丸投げをひたすら解く、Pythonで

30分プログラム、その389。mixiの(mixi)C/C++の課題丸投げコミュニティにある問題をひたすら解いてみる。ただし、Pythonで。このコミュニティの趣旨はいかがなものかと思うけど、C言語で解かなければ誰の得にもならないからOKだろう。ボクとしても、こういう…

カエサル暗号

30分プログラム、その382。Pythonでカエサル暗号。 The Zen of Pythonをローカライズしたらおもしろいかも あれ、カエサル暗号で暗号化されてるんだよなぁ 元コードはa-zにしか対応してないなぁ よし、Unicode対応のカエサル暗号を作ろう という理由で作って…

Thriftを使おう(2)

30分プログラム、その374。Thriftを使ってみよう、その2。インストールについては、Thriftを使おう(1) - みずぴー日記を参照。 IDLを書こう fact.thrift service fact{ i32 fact(1: i32 n) } スケルトン生成 $ thrift --gen cpp --gen py fact.thrift Python…

計算機っぽいGUI

30分プログラム、その367。id:mzp:20080902:calcで電卓のロジック部分を作ったので、こんどはGUI部分を作ってみる。 Tkとかは大変そうだったので、JythonでSwingを叩いてみた。 使い方 $ jython calc-gui.py ソースコード # -*- mode:python; coding:utf-8 -…

電卓を作ろう(1)

30分プログラム、その359。PythonでGUIな電卓を作ってみよう。 とりあえず、ロジック部分にチャレンジしてみたけど、結構難しい。誰か状態遷移図書いてないかな。 使い方 $ python calc.py >>1 1 >>+ 1 >>2 2 >>+ 3 >>3 3 >>= 6 ソースコード #! /usr/bin/py…

Pythonで無限リスト(をやろうとして失敗)

30分プログラム、その353。itertoolsを試してみる。 Pythonのライブラリを眺めてたら、SMLとHaskellを参考にしました、と書いてある素敵なモジュールを見つけたので試してみた。 使ってみた感想としては、相当クセが強い。HaskellやSMLのプログラミング方法…

Gmailのメール一覧を取得

30分プログラム、その348。imaplibを試してみる。 前にid:dmp939が、『定期的に受信ボックスをチェックして、特定のメールをトリガーとして何かを起動するプログラムを作ろうぜ』っていう「それなんてprocmail」って感じのことを言っていたのを思いだしたの…

Problem 60 - Project Euler(途中)

30分プログラム、その341。Problem 60 - Project Euler。 前回のやつではうまく行かないので、ちょっと変更してみた。キューを使った幅優先探索。でも、これもダメみたい。 使い方 $ python problem60.py ソースコード #! /usr/bin/python # -*- mode:python…

Problem 60 - Project Euler(途中)

30分プログラム、その340。Problem 60 - Project Euler。 素数判定の方法を変更してみた。きっとこれなら上手くいつはずだ。とりあえず、しばらく走らせてみよう。 使い方 $ python problem60.py ... ソースコード #! /usr/bin/python # -*- mode:python; co…

Problem60 - Project Euler(途中)

30分プログラム、その339。Problem 60 - Porject Euler。id:mzp:20080713:eulerの続き。 エラトステネスの古いが、再起が深すぎてRuntimeエラーがでてしまうのでwhileで書き直したりしてみたけれど、そもそもこれだと遅すぎで全然解けない。別の方法を考えな…

Problem 60 - Project Euler(途中)

30分プログラム、その338。Problem 60 - Project Euler。 素数3, 7, 109, 673は非凡な性質を持っている. 任意の2つの素数を任意の順で繋げると, また素数になっている. 例えば, 7と109を用いると, 7109と1097の両方が素数である. これら4つの素数の和は792で…

Problem 57 - Project Euler

30分プログラム、その335。Problem 57 - Project Euler。 昨日(id:mzp:20080706:euler)の修正版。冷静に見直すと動的計画法がうまくできてなかった。それを直したら、再帰に関する例外も消えたし、速くもなった。 使い方 $ python problem57.py ... 951 956 …

Problem 57 - Project Euler

30分プログラム、その334。Problem 57 - Project Euler。 2の平方根は無限に続く連分数で表すことができる. √ 2 = 1 + 1/(2 + 1/(2 + 1/(2 + ... ))) = 1.414213...最初の4回の繰り返しを展開すると以下が得られる. 1 + 1/2 = 3/2 = 1.5 1 + 1/(2 + 1/2) = 7…

Problem53 - Project Euler

30分プログラム、その327。Problem53 - Project Euler。 12345から3つ選ぶ選び方は10通りである. 123, 124, 125, 134, 135, 145, 234, 235, 245, 345.組み合わせでは, 以下の記法を用いてこのことを表す: 5C3 = 10.一般に, r ≤ n についてnCr = n!/(r!(n-r)!…

Problem47

30分プログラム、その321。Problem47 - Project Euler。 連続する2つの数がそれぞれ2つの異なる素因数を持つのは 14 = 2 × 7 15 = 3 × 5 の場合である.同様に連続する3つの数がそれぞれ3つの異なる素因数を持つのは 644 = 22 × 7 × 23 645 = 3 × 5 × 43 646 …

Problem42

30分プログラム、その315。Problem42 - Project Euler。 三角数のn項は tn = ½n(n+1)で与えられる. 最初の10項は 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...である.単語中のアルファベットを数値に変換した後に和をとる. この和を「単語の値」と呼ぶことにす…

Problem38

30分プログラム、その311。Problem38 - ProjectEuler。 192を1, 2, 3で掛けてみよう. 192 × 1 = 192 192 × 2 = 384 192 × 3 = 576積を連結することで1から9のPandigital数 192384576 が得られる. 192384576を 192と(1,2,3)の連結積と呼ぶ. 同じようにして, 9…

Problem35

30分プログラム、その308。Problem35 - Project Euler。 197は巡回素数と呼ばれる. 桁を回転させたときに得られる数 197, 971, 719 が全て素数だからである. 100未満には巡回素数が13個ある: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, および97である. 1…

Problem30

30分プログラム、その303。Problem30 via Project Euler。 驚くべきことに, 各桁を4乗した和が元の数と一致する数は3つしかない. 1634 = 1^4 + 6^4 + 3^4 + 4^4 8208 = 8^4 + 2^4 + 0^4 + 8^4 9474 = 9^4 + 4^4 + 7^4 + 4^4 ただし, 1=1^4は含まないものとす…

Problem25

30分プログラム、その296。Problem25 via ProjectEuler。 フィボナッチ数列は以下の漸化式で定義される: F(n) = F(n-1) + F(n-2), ただし F(1) = 1, F(2) = 1.最初の12項は以下である. F(1) = 1 F(2) = 1 F(3) = 2 F(4) = 3 F(5) = 5 F(6) = 8 F(7) = 13 F(8…

Problem23が解けた

30分プログラム、その294。やっと、Problem23が解けた。 完全数とは, その数の真の約数の和がそれ自身と一致する数のことである. たとえば, 28の真の約数の和は, 1 + 2 + 4 + 7 + 14 = 28であるので, 28は完全数である.真の約数の和がその数よりも少ないもの…

組み合せで表現可能な数字の和

30分プログラム、その293。昨日の続きで、『組み合わせで表現可能な数の和』を計算するコード。ハッシュを使ったりして高速化をはかるも挫折。 明日は方針を変えて、Xが過剰数のときN-Xが過剰数であるかをチェックする方法でやってみよう。 使い方 >>> combi…