Arantium Maestum

プログラミング、囲碁、読書の話題

Python

PythonのCurioライブラリ

Twitterを見ていたらDavid Beazleyがこんなつぶやきをしていた。 Curio abides. https://t.co/cPqEfr6dOD— David Beazley (@dabeaz) 2016年5月30日 Curioってなんだ?とリンクを辿って読んでみたら去年のブラジルPyconで話した内容をさらに進化させたライブ…

Python代入の流れーナンダコレ

stackoverflow.com a, b = a[b] = {}, 5 Raymond Hettingerの過去ツイートを追っていたら、これってどうなるんだ?とわからなかった式があった。 結果はa = {5:(a, 5)}、b=5と再帰的なディクショナリーができる。 肝は代入式の評価順で、a = b = c = dの場合…

Alex Martelli版エラトステネスの篩をClojureで書いてみた

素数算出アルゴリズムで最も有名なものは多分エラトステネスの篩だろう。発見した素数の倍数を消していく(篩にかけていく)ことによって、残った数の中で最小のものが素数だとわかる。そのプロセスを繰り返していくことで、一定のn以下のすべての素数が効率…

Design of Computer Programs

今週末は約束や予定が5、6個あって大変そうだなぁと思っていたのだが、金曜日から覿面に風邪をひいて全部ブッチするという非常に申し訳ないことをしてしまった。 頭が少し朦朧としつつも暇だったので、映画やら見ながら(そういえば超久しぶりに「アマデウ…

Python 覆面式ソルバー 終

前回からの続き。 そうこうしているうちに、ついにルール追加である。 以下の二つのルールを追加する。 二つの数の和の一番上の桁に関するルール 二つの数とその和の同じ桁に関するルール その前に、足し算と引き算でルールをケース分けするのはめんどうなの…

Python 覆面式ソルバー 続続続

前回からの続き。 てなもんで、再帰的に書いたソルバーに、各段階で次のステップに使える数字を絞るルールを組み入れる仕組みを作っていく。 方式としては、入力された文字列を引数にして評価関数を返す高次関数create_rule(input_string)を作成する。その返…

Python 覆面式ソルバー 続続

前回からの続き。 というわけで総当たり形式をやめて、なるべく制約を加えることで評価する文字:数字マッピングの総量を絞ってみる。 具体的には for numbers in permutations(range(10), len(characters)): この部分をやめるわけである。じつはこの部分も…

Python 覆面式ソルバー 続

前回からの続き。 ということで高速化に取り組んでみる。 が、その前に、とりあえず短く書いたコードが実際どれくらいかかっているのか、数値化しておく。 import time def time_solver(input_string): start = time.time() solve(input_string) end = time.…

Python、再帰とダイナミック・プログラミング 微調整

以前書いたこのエントリーの最後のコードだが zehnpaard.hatenablog.com H = {0:0} for n in xrange(1, 2016): H[n] = n - H[H[H[n-1]]] print H[2015] 書いた直後から、そもそも数字がkeyならdictionaryじゃなくてlistでよくないか?と気になっていた。(が…

Python 覆面式ソルバー

気がついたら前回の更新から四半期が過ぎようとしている。恐ろしいことだ。 IT速報でまた面白そうな問題があった。 blog.livedoor.jp 複数の文字が同じ数字にマップしないと仮定するなら、そもそも問題の大きさが最大で10!(~360万通り)なので、ちょっと時…

Python、再帰とダイナミック・プログラミング

IT速報で以下の記事があった。Pythonでの解き方を少し考えてみた。 blog.livedoor.jp 数列Hが以下のように定義されているとき、H(2015)を求める。 H(0) = 0 H(n) = n - H(H(H(n - 1))) (n > 0) 再帰で書くならかなり簡単である。 def H(n, memo={0:0}): if n…

PEP8を超えて

Python関連の映像では、私はRaymond HettingerとDavid Beazley*1のものが最も好きだ。 まず、どちらも非常に話が上手い。ユーモアを交え、あまり急かした感もなく、それでいて聞き手のことを考えた話の運びであるように思う。あと英語が訛っていないので聞き…

Python Code Snippet - 最大の三連続

時々メモっておきたくなるようなPythonコードを思いつくので備忘録的に「Python Code Snippet」の題で保存していこうと思う。 今回はStackOverflowで一旦質問として提示されて、あまりにも宿題っぽかった上に質問者自身がなんら解決に向けて努力していなかっ…

Python stdlib reading - antigravity

StackOverflowなどを読んでいて、Pythonの良質サンプルコードの話になると大抵挙がるのがstandard libraryである。*1 Pythonの哲学の一つにBatteries Includedというものがあり、基本的にPython自体のインストールについてくる豊富なstandard libraryで相当…