Hatena::ブログ(Diary)

西尾泰和のはてなダイアリー

2008-04-15

n個のべき乗の合成

http://blog.koshigoe.jp/archives/2008/04/n2.html

Pythonではべき乗が**なので置き換えさせてもらうことにする。

>>> 2
2
>>> 2 ** 2
4
>>> 2 ** 2 ** 2
16
>>> (2 ** 2) ** 2
16
>>> 2 ** (2 ** 2)
16

ここまではいいのだけど、4番目から結合の順序によって結果が変わるようになる。

>>> ((2 ** 2) ** 2) ** 2
256
>>> 2 ** (2 ** (2 ** 2))
65536

累乗は結合法則をみたさない、というわけなので、まずはどっちの結果を期待しているか明確にしないと行けないんじゃなかろうか。

ちなみにPythonだと後者。

>>> 2 ** 2 ** 2 ** 2
65536

数学的に簡潔に各方法は知らないけど、Pythonコードで簡潔に書くのならこうかな。

>>> reduce(lambda x, y: y ** x, [2L] * 4)
65536L

__ 2008/04/16 19:40 簡潔に書けないでしょうけど表記法ならあります。
「クヌースの矢印表記またはタワー表記」
http://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%AF%E3%83%BC%E8%A1%A8%E8%A8%98

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nishiohirokazu/20080415/1208250014
Connection: close