「ハノイの塔」解法プログラム、108変化 41
ストーリー by Oliver
よりどりみどり 部門より
よりどりみどり 部門より
dseg 曰く、 "本家/.の記事より。
あるプログラムを幾つかの言語で書いてみるというのは一般的だけど、なんと108ものやり方で書いた人が現れた。
お題は「ハノイの塔」、19世紀にフランスの数学者、リュカが考案した古典的なパズルだ。
108もの解法のその殆どは、個別の言語を使ったもので、中にはCOBOL、Webサービス、恐ろしげなsedスクリプトなんてものもある。
更には、Sendmail(謎)、ICMPエコーのシーケンス番号で答を返すPINGサーバなど強烈にわけのわからない実装まである。LOGO のスクリプトもやはりちゃんとあった :)
尚、パズルを解くプログラムは、再帰を利用する形になる。昔解いた事のある方も、ちょっとチャレンジしてみるのも吉かと。Emacsen使いな方は M-x hanoi もお試しあれ"
108 (スコア:3, おもしろおかしい)
Re:108 (スコア:4, 参考になる)
Are you aware of the significance of the number 108 in Hinduism?
Yes, I am.
とのことで、ヒンズー教が元ネタらしい。
仏教の煩悩との関係は不明だが、無関係ではなかろう。
「どこぞの寺院でバラモン僧がハノイの塔を解いていて、解き終わると世界が滅亡する」という話(もちろん創作だが、そういうフレコミで紹介された)に出てくるヒンズー教にかけているのだろう。
Re:108 (スコア:2, 参考になる)
その昔、「孔子暗黒伝」でみました。
宇宙は「成劫」「住劫」「壊劫」「空劫」の四つの周期から成り立っており、パズル(?)を解き終われば「空劫」となり、宇宙の周期は一巡してまたはじまる、というものです。
「108」の由来については、どのような本意か解りませんが、ググったところ、以下のような記述のあるサイト [www.ne.jp]を見つけました。
>タイだかどっかのお寺では,64枚だか108枚だかのペグでハノイの塔を解くと悟りが開けるらしい。
まあ、インド文化圏では「108」という数字そのものがよく使われる数字みたいですけどね。
Re:108 (スコア:2, 参考になる)
この四苦と八苦から、百と八の煩悩が生まれると言う。即ち、しく三十六とはっく七十二を足して、百八と(4*9+8*9=108)。
Re:108 (スコア:2, おもしろおかしい)
-- 哀れな日本人専用(sorry Japanese only) --
Re:108 (スコア:1)
Re:108 (スコア:1)
五十六億七千万年というと… (Was:108) (スコア:2, おもしろおかしい)
#弥勒が寝返りをうったりしそうなので ID
タブレット中毒者。
Re:108 (スコア:1)
(ゆっくりとやってて欲しいものですが)
Re:108 (スコア:0)
Re:108 (スコア:1)
Re:108 (スコア:1)
少しは自分で調べてみてはどうじゃ。
Re:108 (スコア:1)
64枚のハノイの塔を動かす手数で、五十六億七千万年を割ってみればよかろう。
他人に聞いてばかりいては、いつまで経っても悟りは開けぬぞ。
Re:108 (スコア:1)
大体、一秒くらいでしょうか。ゴハンを食べる間も無いというのも
あるのですが、かなりの高速と(64段だし)見受けられました。
Re:108 (スコア:1)
ですが、どうも計算がかなり合わないような気がいたしましたので。
手数は (2^64)-1なんすね。
18446744073709551615 / 56億7000万
3253394016枚を一年でサバク必要あり。
365割る24割る60割る60は
103.16444750530370943048095085978
100枚/秒!!!すげえ!!!超人!!
M-x hanoi より圧倒的に速い!!
Re:108 (スコア:0)
インドではおそらく全く違う単語だよね。
(4*9+8*9)というのは日本で生まれた語呂合わせ由来なのでは?
Re:108 (スコア:1)
Re:108 (スコア:1)
眼・耳・鼻・舌・身・意の六根に
それぞれ、好・悪・平があって、
それぞれに、 浄・染の2つがあり
それぞれに、過去世、現世、来世の3つ
があるので、かけ算すると 108
# 12ヶ月と24節気と72候 を足しても 108 なんだそうな。
# どうして、足す必要があるのかは知らない。
信ずる者は掬われる。
ハノイの塔と聞くと (スコア:2, 興味深い)
Re:ハノイの塔と聞くと (スコア:1)
当時、「どこからでもアクセスできる世界的なデータベースが出来れば、THcompは実現できるのに」と思ったものですが…
今だと、Winny に流してハッシュを圧縮値扱いすることで似たようなことが実現できますね。
thcomp.thc 7468636f6d702e746863
みたいな感じで。
Re:ハノイの塔と聞くと (スコア:1)
僕は 第三の理 [ynu.ac.jp] を思い出すなぁ。
って問題なの。Koichi
Re:ハノイの塔と聞くと (スコア:0)
Re:ハノイの塔と聞くと (スコア:0)
知っていた人間ってどの程度いたん?
# このころの僕は一緒だと思っていた
お手軽な言語便覧 (スコア:1)
# それにしてもこんなにあるとは。
Re:お手軽な言語便覧 (スコア:2, 参考になる)
Re:お手軽な言語便覧 (スコア:0)
もどうぞ。 108 には入っていませんでしたが、僕の愛している言語 Whitespace [dur.ac.uk]で書いた
これは反則かなあ…… (スコア:1)
昔つくったヤツ [xrea.com]ですが、やはりこれは「解く」ではないですよねぇ?(汗)
BATでご~! (スコア:1)
Nは8までしか対応してませんけど(^^;)
一応、再帰使ってます~。
hanoi.bat:
@echo off
if "%1" == "" goto help
set n=%1
set from=1
set to=3
set using=2
if "%2" == "" goto label1
set from=%2
set to=%3
set using=%4
:label1
if "%n%" == "0" goto exit
set n_1=0
if "%n%" == "1" goto label2
set n_1=1
if "%n%" == "2" goto label2
set n_1=2
if "%n%" == "3" goto label2
set n_1=3
if "%n%" == "4" goto label2
set n_1=4
if "%n%" == "5" goto label2
set n_1=5
if "%n%" == "6" goto label2
set n_1=6
if "%n%" == "7" goto label2
set n_1=7
:label2
%comspec% /c "hanoi.bat %n_1% %from% %using% %to%"
echo move %from% - %to%
%comspec% /c "hanoi.bat %n_1% %using% %to% %from%"
goto exit
:help
echo usage: hanoi N
:exit
Non-recursive な解も (スコア:1)
108ものやり方 [kernelthread.com] のリストで、赤地に白で N と書かれたものは再帰を使わない解法ですね。
恐ろしげなsedスクリプト [kernelthread.com] も再帰を使っていません。
Re:Non-recursive な解も (スコア:1)
面白そうなのは、 (スコア:1)
BASIC のには、コメント部分にBill Gates の公開書簡が張り付けてあったりするんだが、いったい全体どうして。
実行ファイルをtypeで表示 (スコア:1)
書かれたプログラムをアセンブルして、実行形式(.xではなく.r)にした
ものをtypeで画面に表示させたらおもむろにハノイの塔が始まるという
のがありました。
一見それっぽいコードなのですが、功名にエスケープシーケンスを埋め
込んでいたのでしょうね。非常に感動したのを覚えています。
そのファイルを実行して何が起こるのかは覚えてません(^^;)
#Oh!Xに掲載気譴討燭鵑世辰燭?福?
Re:実行ファイルをtypeで表示 (スコア:0)
それを利用したものです。ハノイの塔を解くのはそのソースじゃなくてアセンブラ
自身だというのがミソです。
「ディスクを1枚移動する」というマクロの中身が、.dc.b で「エスケープ
シーケンスを使ってディスクが移動しているように見える文字列」を生成する
ようになっていて、アセンブル時にそのマクロが再帰的に展開されることで
ハノイの塔を解いているように見える文字列が.dc.bで生成されるわけです。
実行形式を.rに変換する必要があったのは、実行ファイルに含まれるヘッダなどの
余計な情報を取
sendmail.cfの解は・・・ (スコア:1)
Postscript (スコア:1)
( move disk from ) print print ( ==> ) print print (\n) print
たまげた (スコア:0)
ベンチマークとか負荷耐性のテストに利用できないかなぁ
だれか… (スコア:0)
109 (スコア:0)
A C 等幅に並んだ中央の棒を前後に√3倍移動する。
B すると書く点は正三角形の位置し、各棒の距離は等距離になる。
B A 全体を120°回転させ、
C 中央の棒を√3倍戻すと
BCA なんと、塔が移動している.....
110
ABC 裏から見る。鏡で見る
#汚いと言われようがこれもとんちなのでAC
Re:109 (スコア:1)
-- 哀れな日本人専用(sorry Japanese only) --
Re:109 (スコア:0)
ハノイの塔って、塔の移動が可能なら何も問題ないと思います。
Re:109 (スコア:1)