「ナイト・ツアー」の解をPython 60行でコーディング 39
ストーリー by hylom
Python Golf 部門より
Python Golf 部門より
capra 曰く、
チェスを使ったパズル、「ナイト・ツアー」というゲームをご存知だろうか?ナイトをボード上のマスを移動させ、全てのマスを1回ずつ通過させるというパズルである。
本家/.のttsiod氏は、このパズルの解をPythonで60行のコードで書いたそうだ。「100×100マスのボードでも1秒足らずで解を出せる」とのことだが、本家では「処理は速くないが11行で書いてみた」といったコメントや、「残念だが、次バージョンでは動かないだろう」といったツッコミなどが多く寄せられている模様。
改行しなければ (スコア:2, おもしろおかしい)
Re:改行しなければ (スコア:1)
Re: (スコア:0)
Re: (スコア:0)
習作 (スコア:1)
問題をアルゴリズムミックに解いていくという考え方の習作として、問題領域も広すぎずちょうどいいですよね。
Re: (スコア:0)
Re:習作 (スコア:3, おもしろおかしい)
これでいいの?
飛________
_飛_______
__飛______
___飛_____
____飛____
_____飛___
_______飛_
______飛歩飛 <ちょ、おまwwww
_______飛_
1を聞いて0を知れ!
Re: (スコア:0)
Re: (スコア:0)
Re:習作 (スコア:1, すばらしい洞察)
Re: (スコア:0)
・上に積む
まだか (スコア:1)
書いたぜ! (スコア:0)
「ナイト・ツアー」って (スコア:1)
見学する順路を解いたのかと空目した。
Re:「ナイト・ツアー」って (スコア:1)
K.I.T.T.ならすぐ答えを返してくれそうだ。
Re: (スコア:0)
Re: (スコア:0)
一行とは (スコア:1)
「いや、このOSではCRLFが改行だから」
本家のPerlのChessモジュールを使ったやつが動かない (スコア:1)
love && peace && free_software
t-nissie
Re:本家のPerlのChessモジュールを使ったやつが動かない (スコア:1)
Re:本家のPerlのChessモジュールを使ったやつが動かない (スコア:1)
3x3と4x4には解がないけど5x5にはたくさん解があることがすぐに出せますね。 Prologは勉強しようと思ってもいつも「磯野家の家系」どまりなので、
これを機会に、Knight's Tour Puzzleで「始点と終点が一致」の条件を
つけたら解はどれくらい減るのか、をとりあえず目標にいじってみます。
love && peace && free_software
t-nissie
Re: (スコア:0)
Haskell版 (スコア:1)
まず2行版。さらにセミコロンを使ってよければ、何でも1行になるので、行数を競っても仕方ありませんけれども。
一応Haskell 98仕様準拠のはず。もう一つは、長さは気にせずネタ元のPython版とほぼ同様の動作をする高速版です。ghc 6.8.1以降が必要ですが、ghc 6.10.1で動くかどうかは未確認です。51行になりました。
手元のFreeBSD 7.1-PRERELEASE, Core 2 Duo E6600 2.4GHz, 2GB RAM, ghc 6.8.3の環境で試してみると、 100x100の盤面でも1秒足らずで計算できました。桂馬で全マス踏むゲームがあった (スコア:0)
ナイトムーブ? (スコア:3, 参考になる)
ディスク片面・書換専用で、テトリスの作者が開発したそうです。
ナイトを盤面(縦4x横8)でジャンプ移動させ、同じマスを3回踏むと穴が
開き、穴に落ちないよう全マスを3回ずつ踏むと面クリアです。
連続で穴を開けたり、移動スピードを上げて踏むと高得点になります。
しかしナイトは立ち止まれず、どんどんスピードアップし、面ごとに開始位置も
変わるため、ハイスコア獲得が難しい仕掛けになっていました。
匠気だけでは商機なく、正気なだけでは勝機なし。
Re: (スコア:0)
Re:桂馬で全マス踏むゲームがあった (スコア:1)
ナイト・ツアー問題は、ナイト巡回問題とも言いますね。
Re: (スコア:0)
途中で成ればおk。ってそういう話じゃないね。
Re: (スコア:0)
成ったら上下左右に移動できるから簡単じゃないかと思いましたが、
念のためにちょっとやってみました。
将棋に準拠した桂馬の初期位置(8-九)を仮定すると、
その隣の角(9-九)が終点になることが確定します。
桂馬が成ったポイントから、終点となる角まで、
成るまでに通った足跡を避けながら全てのマスを通っていく...
いや、これってどうやっても無理なんじゃないか?
ここでふと、成った桂馬は斜め前にも移動できる事実に気づきました。
やはり何の面白みも無い簡単すぎる問題でしたねこれは。
皆様も試さない方が良いですよ。
その名は ( Re:桂馬で全マス踏むゲームがあった) (スコア:1, おもしろおかしい)
成金になれば問題が解決するという、プラグマティックな解決策を教授するためのゲーム。
python なのに one-liner (スコア:0)
すぐに「いやもっと短く」「俺は4行だぜ」とかのコメントが付いて、、、
元ネタの60行の人のはちゃんとした python コードっぽい雰囲気なんですが
この辺の4行とかの世界は 4行とはいっても "素直な4行" とは程遠いです。
それはそれで技を駆使しているわけですが…
(いい加減に "バイト数" とか何かもっと別の指標が欲しいところ)
Re:python なのに one-liner (スコア:1)
Usageが表示されない以外はほぼオリジナルと同じです。
Re:python なのに one-liner (スコア:2)
誰か,「Python3.0リリース」でタレコミお願いします。参考サイト:
Re:python なのに one-liner (スコア:1)
ついでに、先のコードを「ずるっこ」込みで最適化した9行バージョンをば。
(発見できなかったときにメッセージを表示しない、数字桁数が5桁固定という違いあり)
各行は某七行プログラミングスレの流儀に従い、1行は79桁以内に収めてあります。
あと2行が減らせない(^^;)
バイト数 (スコア:0)
Re: (スコア:0)
大昔 (スコア:0)
7行テトリス (スコア:0)
これって海外での知名度はどれほどのものなんだろう?
http://2chparty.net/archives/tetris/1059892659.htm [2chparty.net]
Re: (スコア:0)