タグ

ブックマーク / www.nishiohirokazu.org (9)

  • 西尾泰和のブログ: GRINEditを使ってソースコードの可視化

    控えめな Brainfuck コードを色づけする GM を見て、唐突に思いついたので作ってみました。 可視化する対象のコードは、 竹迫さんのTAKESAKO @ Yet another Cybozu Labs: Brainf*ckで100までの素数を列挙してみるテストと、奥さんのKazuho@Cybozu Labs: brainf*ck でマジメに素数探索。 まず、竹迫さんのコードの全体像。 そして一部拡大した物がこれ。 各頂点が1つの命令で、太い辺が命令の隣接関係、 細い辺が括弧の対応関係です。+が赤、-が青、.が緑になっています。 竹迫さんのコードは実は数字を作って表示するだけのコードなので、 大局的な構造がありません。 大まかに見ると「小さなループが所々にある1の紐」です。 可視化する際も、頂点を徐々にy座標を増やしながら作るだけでこんな風に ほとんどもつれずに表示されました。 い

    Wacky
    Wacky 2009/01/11
  • 西尾泰和のブログ: RubyのyieldとPythonのyieldの違い

    RubyのyieldとPythonのyieldは実は全然違うような気がしてきたので、整理のために書いてみます。 まず、Rubyでeachに相当する物を自分で実装してみました。 # Ruby 1 class Array def my_each self.each{|x| yield x } end end [1, 2, 3, 4, 5].my_each{|x| puts x } これに相当する物をPythonで書くと、実はyieldを使いません。 # Python 1 class Array(list): def each(self, f): for i in self: f(i) def myprint(x): print x Array([1, 2, 3, 4, 5]).each( myprint ) これをもっとRuby 1のコードに近づけて書くと以下のようになります。Pythonには

  • 西尾泰和のブログ: もじら24日記

    (無意味に自重しました) Mozilla24 on Flickr - Photo Sharing! 眠い。 最初の20分でバッテリーがなくなったのでログはなし。 yukobaさんにさんざんPythonの処理系を書けとけしかけられる。あうたびに言われている気がする。 shi3zの日記 - マシン語を知らない子ども達 の正論に賛同して 「プログラミング言語というのは、その言語の処理系を実装して初めて「書ける」と言うのです。 プログラムが書ける、という状態は「処理系が書ける」という状態の延長線上にあるべきで、処理系を書けないということはその言語を理解していないということです。」 とか書こうと思ったけど面倒だからやめた。 ♪僕らの名前を覚えて欲しい 機械語を知らない子供たちさ~ AutoPagerize+LDRize入れた AutoPagerize (swdyh) IT戦記 - Firebug で

    Wacky
    Wacky 2007/09/19
  • 西尾泰和のブログ: KEMURI

    第39回情報科学若手の会の夜のセッションでのディスカッションから生まれた言語「KEMURI」を紹介します。 これはKEMURIで「Just Another Python Hacker,」と表示するコードです。 `"^^"^^^^"^^'"^^"^^'"^^"^^'"^^"^^"'"^^"^^`"^^"^^^^"^^"^^"^^"^^"^^'"^^"^^"'"^^"^^`"^^'^^'"^^"^^'"^^"^^'"^^"^^'"^^"^^"'"^^"^^`'"^^"^^^^'"^^^'"^^"^^'"^^"^^'"^^"^^`"^^"^^^^^^'"^^"^^'"^^"^^'"^^"^^`"^^"^^"^^'"^^^'"^^"^^'"^^"^^'"^^"^^^`'"^^"^^'"^^"^^'"^^"^^'"^^"^^'"^^"^^'"^^"^^`"^^"^^^^"^^"^^'"^^"^^'"

    Wacky
    Wacky 2007/09/19
    Pythonで書かれたKEMURIのインタープリタを下に掲載します。
  • 西尾泰和のブログ: PythonのLOADとSTORE

    いわゆる「ローカル変数」の読み込みはLOAD_FAST >>> from dis import dis >>> def foo(x): x >>> dis(foo) 2 0 LOAD_FAST 0 (x) 3 POP_TOP 4 LOAD_CONST 0 (None) 7 RETURN_VALUE グローバル変数はLOAD_GLOBAL >>> def foo(): x >>> dis(foo) 2 0 LOAD_GLOBAL 0 (x) (以下略) 代入があるとローカル変数になる。 >>> def foo(): x = None >>> dis(foo) 2 0 LOAD_CONST 0 (None) 3 STORE_FAST 0 (x) global宣言をつけるとグローバルになる。 >>> def foo(): global x x = None >>> dis(foo) 3 0

    Wacky
    Wacky 2007/09/10
  • RSSを取得するプログラム @ NISHIO HIROKAZU # Archived COREBlog

    NISHIO Hirokazu's website > NISHIO HIROKAZU # Archived COREBlog これは2004年11月4日から2006年2月18日までZopeで運用していたCOREBlogの静的なアーカイブです。 新しい日記は「西尾泰和の日記」で運用しています。 RSSを取得するプログラム EnglishImprinterに貼り付ける英文をスラッシュドットのRSSから取ってきたら面白いかと思ってRSSの取り方を調べる。 import feedparser d=feedparser.parse("http://slashdot.org/index.rss") return d.entries[0].description えっ、3行…。さすがPython…。 追記@2004/12/09 このエントリはJythonでRSSを取得とRSSを取得するプログラム-補足

    Wacky
    Wacky 2007/05/20
    .description
  • 西尾泰和のブログ: Pythonで日本語PDFをつくるサンプル

    トラックバック(Trackback) Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/556 (フィードバックはメールで送信され、基的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

    Wacky
    Wacky 2007/04/05
  • 西尾泰和のブログ: Pythonでマウスポインタの位置を取得→その周辺のスクリーンキャプチャ

    マウスポインタの位置を取得するにはwin32allを使います。 >>> import win32api >>> win32api.GetCursorPos() (373, 741) スクリーンをキャプチャするにはPythonImagingLibraryを使います。 >>> import ImageGrab >>> ImageGrab.grab((100,100,200,200)) >>> _.save(r"c:\tmp.png", "PNG") これで指定した範囲のキャプチャがtmp.pngという名前で保存されているはずです。ImageGrab.grabの引数を省略するとスクリーン全体になります。

    Wacky
    Wacky 2006/12/23
    スクリーンをキャプチャするにはPythonImagingLibraryを使います。
  • 西尾泰和のブログ: Pythonでワンライナーを作成する際のノウハウ集

    これはLL Ringというイベントの「じゃんけん2.0」に出場する際に「多くの構文に改行が必須であるPythonで書かれたじゃんけんエージェントをワンライナーにしていたらウケるかな」と思ってワンライナー化しているときに書いたメモです。自分用のメモのつもりだったので書き殴ってありますが、意外と人気のようなので近いうちに加筆します。 実は後から書いた英語版(How to make oneliner in Python?)の方が整理されているのかも。 完成したワンライナー def文を式にする defは改行を要求するのでlambdaに置き換える必要がある。 def foo(x): return x + 1(ここに改行) foo = lambda x: x + 1 globals().__setitem__("foo", lambda x: x + 1) lambdaは式しか含むことが出来ないので、

    Wacky
    Wacky 2006/09/02
    「じゃんけん2.0」に出場する際に「多くの構文に改行が必須であるPythonで書かれたじゃんけんエージェントをワンライナーにしていたらウケるかな」と思ってワンライナー化しているときに書いたメモです
  • 1