タグ

ブックマーク / handasse.blogspot.com (6)

  • Python: 画像で与えられた迷路に対し2点間の最短経路を求める

    迷路の描かれた画像に対して、ピクセルの座標で指定したスタート地点とゴール地点の最短経路を求めるプログラムをPython+PILで書いてみた。使用する画像は、デジカメで撮ったものでも、ウェブから拾ってきたものでも、ペイントソフトで自作したものでも構わない。 まずは使用例を見て欲しい。この画像は携帯カメラで撮った自作の簡単な迷路だ(画像上)。それに対して指定した2点間の最短経路を赤線で示してみた(画像下)。ピクセル単位で計測しているので赤線が若干ガタガタしていて完全な最短経路ではないがほぼ最短と考えていいだろう。迷路画像(画像上)をmaze01.jpgとし、スタート地点の座標が(240, 160)、ゴール地点の座標が(210, 400)の場合、コマンドラインで以下のように実行する。 maze_solver.py maze01.jpg -s 240 160 -g 210 400 これで最短経路を

    Python: 画像で与えられた迷路に対し2点間の最短経路を求める
  • 結局Pythonを使ってコマンドラインで動作するTwitterクライアントを作ってしまった

    Twitterのアカウントを取ってから既に1年半になるが、活発に使っているとは言い難い。その原因の一つとしてTwitterのクライアントがある。どうにも自分が利用するのにピッタリだと思うクライアントが見つからなかったのだ。そこで結局、自分の好みに合わせてコマンドライン上で動作するシンプルなTwitterクライアントをPythonで作ってしまった。しかも、ワンライナー(1行プログラム)。 最初の頃はいくつかのクライアントを使ってみたのだが、PCでの作業はシェルで行うことが多いので別のウィンドウを開きたくなかったり、Windows、Unix、MacなどのOSが変わっても同じクライアントを使いたかったり、GUIじゃなくてCUIで操作したかったり、それほど使い込むつもりがないので極力シンプルでコンパクトになっていて欲しかったり、そもそもクライアントをインストールしたくなかったりと、かなり条件を厳し

  • The Python Challenge全問制覇、そしてヒント集

    ついにThe Python Challengeを全問(34問)解いた。これだけ面白いものには滅多に出逢えないだろう。3年近く?、長かったなぁ。まあ、期間は長かったけれど、度々中断してたので(数ヶ月から一年以上とか)、実際は3週間ぐらいかな? フォーラムのPython Challenge Hintsには助けられたけど、逆に混乱することも。ちょっとしたひらめきが重要なので、当は一緒に考えてくれる仲間が周りにいれば良かったと思うんだけど、残念ながらいなかったので一人で解いた。これから挑戦する方は、できるだけ複数人で解くことをお勧めする。Pythonの勉強にもなるし。三人寄れば文殊の知恵。 と云うわけで、ネタバレにならない程度…というか戯言程度のヒントを書いておく。これを読んで却って混乱しても責任は持てないので悪しからず。もし、ヒントについての質問などがあれば記事のコメントでお願いしたい。返答

  • Google App Engine: 簡単にグラフ・チャートを作成する

    ブログなどでちょっとしたグラフを表示させたい場合、Google Chart APIを使っていた。しかし、手作業で入力するのはかなり面倒だ。ウェブ上にはグラフやチャートを作成するサービスなどもあるが、登録が必要だったり、手順が面倒だったりと、個人的にはあまり手軽だと思えない。数値をコピー&ペーストしてクリック一つでグラフを作成したいのだ。そこで、使いたいサービスは自分で作ってしまえということで、Google App Engine (GAE)とGoogle Chart APIを使って簡単にグラフ・チャートを作成するウェブアプリを作ってみた。 即席で作成したウェブアプリなので不備な点もあるが、取り敢えず自分で使う分にはこの程度で十分なのでGAEに登録しておいた。気が向いたら機能を拡張していくかもしれない。 以下に使い方を示す。 使い方 まず、以下のデータをテキストエリアに入れてみる。 1.2 2

    Google App Engine: 簡単にグラフ・チャートを作成する
  • Python: URL短縮サービスbit.lyのAPIを使ってみた

    最近、TwitterがTinyURLを捨ててbit.lyを採用したらしい。そんなこともあって、URL短縮サービスに興味がわいたので、以前にGoogle App Engineで作成したTwitter送信機能付きメッセージボードで書き込んだURLをbit.lyで短縮して送信できるようにしてみた。今まではURLを含む投稿はTwitterに送信しないようにしていた。以下にbit.lyのAPIPythonを使ってどのように利用すればよいか書いてみる。 まずは、bit.lyで無料アカウントを取得する。これでAPI Keyが貰えるので、bit.lyのAPIを利用できるようになる。次に、bit.ly APIの解説を参考にしながら、APIを使ってみる。URLの短縮も展開も簡単だ。JSONでもXMLでも利用できるが、今回はsimplejsonを使ってJSONを利用している。 詳しくは最後にソースコードを付け

  • Python: PaSoRiでSuicaの履歴を読み出す・その後

    以前、PaSoRiでSuicaの履歴を読み出すという記事を書いたけど、酷いバグを見つけた。物販で購入時の時刻を間違えるというもの。言い訳になるが、つい最近まで古いSuicaを使っていて、駅の自販機などでSuicaが使えず、テストしていなかったのだ。申し訳ない。 と云うわけで、修正したソースを公開しておく。バグだけ修正しても面白くないので、少し改良した。以前は残高しか出なかったが、使用した金額も併せて表示するようにした。また、以下に示す出力のように日時が先頭に来るように変更した。等々。 2008年xx月xx日 ○○駅 ××駅 540円 4160円 改札機 運賃支払(改札出場) 2008年xx月xx日 ○○駅 +2000円 6160円 券売機等 チャージ 2008年xx月xx日 xx時xx分xx秒 買物 120円 6040円 自販機 物販 以下、ソースコード。まだテストが足りないのでバグがある

  • 1