Pythonで末尾再帰的な何か&HAL2000的な何か

必要なデータのダウンロード待ち中。。。なので、ちょこっと巡回

Lip-reading computer picks out your language

Lip-reading computers can recognize different languages

映画「2001年宇宙の旅」にて、コンピュータのHAL2000(ハル)が、宇宙飛行士たちの会話を、唇を読むことによって盗み聞きする、という有名なシーンがあります。
こちらの記事によれば、イギリスの大学がコンピュータによる読唇術を開発中とのこと。耳の不自由な人に役立てることが目的の研究、みたいです。
現在はまだ研究初期の段階ですが、何語を話しているかを、唇の動きだけで判定できるらしい。

映画だとコンピュータの怖~~い側面を強調するシーンでしたけれども、実用化されてみると、意外にお役立ちですねー

Pythonで末尾再帰的な何か

Pythonの生みの親Guido van Rossumさんのblogにて、末尾再帰最適化の話題に。Pythonは末尾再帰最適化を行ってませんが、Guidoさんによる、似たような挙動のサンプルコードは。。。

元記事のコードを実際に動くようにすると、たとえば、こんな感じ。

loop_end="loop end"
def f(x):
    #print x
    if x > 10 : raise loop_end
    return f,(x+1,)

func, args = f,(0,)
try:

    while True:
        func, args = func(*args)
except loop_end:
    print args

コルーチンだとこんな感じ

loop_end="loop end"
def f1(x):
    print "f1"
    if x > 10 : raise loop_end
    return f2,(x+2,)

def f2(x):
    print "f2"
    if x > 10 : raise loop_end
    return f1,(x-1,)

func, args = f,(0,)
try:

    while True:
        func, args = func(*args)
except loop_end:
    print args

ActionscriptにおけるgotoAndPlay関数っぽい挙動。
。。。って書くと自分以外の人には判りにくいですけれども(汗
ラウンドロビンなカーネルっぽい?(違うかも?)

PyGameのループ部分でマネしたいかも、と思ったのでメモ。

関連記事
Tail Recursion Elimination

Tags: ,

Related posts

Tags: ,

Comments are closed.