matsulibの日記

Ingredients as Code

python

Pythonで関数プログラミング 珠玉のアルゴリズムデザイン 第19章「単純な数独ソルバー」

最近読み始めた本。Amazon.co.jp: 関数プログラミング 珠玉のアルゴリズムデザイン: Richard bird, 山下 伸夫: 本www.amazon.co.jpどの章からでも読めるらしいのでとりあえず理解できそうな数独から。 紹介されているアルゴリズムはおそらくタイトルの通り…

PythonでCookieを使ってWebサイトにログイン

相変わらずスクレイピングの勉強中。参考サイト Python2とPython3でHTTP POST+Cookie処理の比較 - yattの日記 Python | saito's memo urllib2でCookieを使う - ひきメモPython3でニコニコ動画にログインして自分で投稿した動画を保存してみた。虚しい。 from…

Pythonで2chのスレをスクレイピングしてMeCabで形態素解析してみる

スクレイピングはlxmlが便利。 MeCabはWindows用のバイナリが用意されてるけど、それだとpythonから使うためのmecab-pythonがインストールできないらしく、MeCabのソースコードを弄って自分でビルドしなくちゃいけないらしい。 ということでいくつかの記事を…

Twitter API を使う

Pythonによるデータ分析入門を読んでいたらTwitter APIを使ってデータを集める方法が書いてあったけれど、出版当時とはAPIの仕様が変わっていてサンプルコードが動かなかったのでメモ。 参考サイト Twitterアプリケーションの作成(Consumer key、Consumer s…

Pythonでリストからn番目に大きな要素を取り出す

最近はずっとプログラミングできてなかったけど、ふと前に授業で使ってたノートを見たら「縮小法」なるアルゴリズムが載っていた。これはリストからn番目に大きな要素を取り出すアルゴリズムで、英語版wikipediaではmedian of mediansという項目に詳しく書か…

Pythonでmultiprocessing.Poolを使ってお手軽並列処理

2コア4スレッドCPUのマシンでPythonを使ってるとCPU使用率が25%までしかならなくて、これが100%まで使えればもっと高速化できるのではないかと思っていた。CPU使用率100%のためにはmultiprocessingモジュールを使って並列処理すれば良い。並列処理といえばプ…

Project Eulerで初めて100番以内に入った

うれしい。 ・Problem 476 - Project Euler 60th solver of Problem476 is matsulib from Japan.— Project Euler (@projecteulerbot) June 15, 2014Mapleで連立方程式を解いて出てきた数式をPyPyに突っ込んだだけ。実行時間は30分くらい。(後日改良してマル…

FizzBuzz・スライス・剰余計算

このFizzBuzzのコードがどうなってるのかすぐに分からなかったのでメモ。 http://codepad.org/fizzbuzz#Python for i in range(1,101): print("FizzBuzz"[i*i%3*4:8--i**4%5] or i) まず (1) "FizzBuzz"[i*i%3*4:8--i**4%5] は文字列のスライスである (2) (1…

線形計画問題に対する内点法 in Python

内点法にもいろいろある。ここでやるのはもちろん一番簡単なやつ。・主アフィンスケーリング法 - 経営工学専攻 - 東京工業大学 http://www.me.titech.ac.jp/~mizu_lab/text/PDF-IP/IP2A-affine.pdf を見てPythonでナイーブに実装した。・行列演算はライブラ…

TopCoderってPythonが使えるんだね

TopCoderのアカウントは2009年に作ったまま放置してたけど、どうやら去年7月からTopCoderでもPythonが使えるようになってたらしい。実行速度とかは大丈夫なんだろうか…しかし2009年当時から問題を見たり回答を提出するためのArenaの使いにくさは変わらず、デ…

pygameによる避難シミュレーションとその動画

障害物効果 避難において出入口付近に障害物を置くと逆に流れがスムーズになる場合がある。この障害物効果はもともと計算機シミュレーションによって発見されたもので、現実にも応用されているらしい。 pygame 障害物効果を自分でも試したくて、障害物の場所…

Sageでのこぎり波のフーリエ級数展開

そろそろ本格化する就活に向けて(?)数学の基礎を復習中、と言っても動画を見て暇をつぶしてるだけだが、Youtubeにある慶應大の講義は非常に分かりやすい。こういうOCWはもっと広まってくれると良いな。今日はこれを見た。 慶應大学講義 物理情報数学C 第…

matplotlibによるサイクロイドのアニメーションにて

以下のサイトを参考に、matplotlibでグラフのアニメーション化を試してみた。・matplotlibでランダムウォークをアニメーション - Soleil cou coupé ・Simple Animated Plot with Matplotlib | Scientific Python Script Repository ・Drawing and Animating …

Python で制御工学

MATLAB ライクなグラフ描写ができる pylab と以下の方法を使って、入力に対するシステムの応答を調べる。 記号計算のためのライブラリ sympy を使う方法 制御工学のためのライブラリ python-control を使う方法 今回の入力は単位ステップ関数だが、インパル…

数独をGurobiとPythonで解く

数独を0-1整数計画問題として定式化して、前回に引き続きGurobiとPythonを使って解いた。まずは0-1整数計画問題として定式化するために数独を10進数から2進数の形式に変形する。 ある問題の解答例: 変換前 変換後 こうすると特定の行・列・ブロックにおいて…

GurobiとPythonで数理最適化

数理最適化ソルバーGurobiにはPython含む複数の言語のインターフェースが用意されていて、 gurobipyモジュールを使うと使い慣れたPythonがソルバーのモデリング言語になる。 例題 http://www.fujilab.dnj.ynu.ac.jp/lecture/system2.pdf あるレストランで,…

PyPyがCPythonより遅くなるとき @ Project Euler Problem 40

仰々しいタイトルだけど、よくある話。 「文字列の結合はjoin()を使おう」で分かる人は、これを読んでも新たに得ることはないと思う。 結論から言うと、join()を使えば例によってPyPyの方が断然速いのでご心配なく。実験環境:Win7, C2D P8400(2.26GHz), RAM…

PyPyを試してみた @ Project Euler Problem 92

PyPyというのは高速なPythonのことです(テキトー)。 公式サイトに実行形式バイナリがあるのですぐに使える。 PyPyをvirtualenvの中で使うとか、pipやipythonを使うという話も、誰かが書いてくれている(他力本願)。 以下、普通のPythonをCPython(Cで実装…

numpyとmatplotlibのインストール

lubuntu 12.10にnumpyとmatplotlibをpipを使ってインストールをしようとしてつまった。以前、それらをubuntuにインストールしたときにはこんな苦労をした覚えがないのだけど…そのときは必要なファイルが全部揃っていたのだろう。 まず、numpyをインストール…