問題タブ [towers-of-hanoi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
recursion - ハノイの塔の私の講師の再帰アルゴリズムを理解できません
アルゴリズムは次のとおりです。
k はディスクの数です (http://en.wikipedia.org/wiki/Tower_of_Hanoi)。私は再帰を理解していますが、これがどのように機能するのか理解していません。誰でもこれを理解できますか?
ここでの説明が曖昧で申し訳ありません。何が起こっているのかについての私の理解もかなり曖昧です.printf行が何をしているのか、関数全体にとって極めて重要なようです。
haskell - この Haskell kata ソリューションをより慣用的にすることはできますか?
私は 10 年ぶりに Haskell を再学習しています。変更点を確認するためと、C#、SQL、JavaScript で過ごした日々への対策として、そして突然クールになったからです ;-)
ハノイの塔をコーディング カタとして設定することにしましたが、十分に単純なものですが、私のコードは慣用的ではないと既に感じており、Haskell のベテランが持っているかもしれないヒントやヒントを聞きたいと思っています。
型をもう少し面白くするために、問題を 2 つの部分に分割します。最初の部分である 関数moves
は、パズルを解くために必要な一連の動きを生成します。コードの残りの部分は、タワーをモデル化し、移動を実行するように設計されています。
私が間違いなく不満を感じている部分の1つはmoveDisc
機能です。これを4つのタワーに拡張するのは面倒です.
ハノイ.hs
TestHanoi.hs
改善のためのコメントや提案をお待ちしております。
artificial-intelligence - 良好な状態空間と探索木を使用してハノイの塔を解く
良い「状態空間」を使って「ハノイの塔」の問題を解決したい。適切な状態空間を使用することは、いくつかのAI技術によって提案されている方法です。良好な状態空間があるので、検索ツリーを構築してから、「DFS」(深さ優先探索)などの戦略を使用して解決策を見つけたいと思います。
私の問題は、適切な状態空間を開発し、それを使用して検索ツリーを構築する方法がわからないことです。ハノイの塔の問題のために状態空間を作成する方法を誰かが説明できますか?次に、そのための検索ツリーを構築する方法を教えてください。
c++ - ハノイの塔
私は、再帰的な方法を使用してハノイの塔の問題を解決するように求めている本の演習に取り組んでいます。私は解決策にたどり着きましたが、インターネットを閲覧した後に収集したことから、私の解決策は正しくない可能性があるということです。問題を解決するためのより良い/別の方法を知っている人はいますか? そして、改善のための提案はありませんか。(ところで、アウトプットは正しいです。具体的にどのペグではなく、どのタワーから別のペグが動いているかを伝えることだけが想定されています)
コードは次のとおりです。
このメソッドは再帰として認定されていますか?
recursion - スタイルを渡す継続は物事を末尾再帰にしますか?
ここで聞くのはもったいないです。本当にそうです。悩みの答えを無駄に探すたびに、それが見えてきます。私を罵倒します。スタック オーバーフロー。
とにかく、地獄のような影響を受けて、ハノイの塔を解決しようとしました。あまりにも多くのディスクで実行するとメモリ エラーが発生したため、最初の解決策は不完全でした。
継続渡しスタイルが問題を解決するということをどこかで読みました。ただし、これも役に立ちませんでした:
javascript - ハノイの塔で再帰的アルゴリズムはどのように機能しますか?
これは私が再帰を説明している本のコードです。問題は、プログラムが実行する手順がわからないことです。
これは、出力の読み取り方法です。
誰かがこれを段階的に分解できますか?それは私にとって非常に役に立ちます。
functional-programming - ハノイの塔でディスクを移動する慣用的な機能的な方法
私はSchemeを学んでおり、おもちゃの例として、Towers of Hanoiのソリューションベリファイア(ソルバーではない)を行っています。私は純粋に機能的なスタイルを使用したいと考えており (考え方を理解するためだけに)、タワーを 3 つのリストの単純なリストとして表しています。開始状態は次のようになります: '((0 1 2 3 4) () ())
状態、ソース インデックス、ターゲット インデックスを受け取り、新しい状態を返す関数を実装するにはどうすればよいですか? 命令型のスタイルでは、これは次のような簡単なものになります。
しかし、私が考えることができるすべての機能的な解決策は、ひどく複雑です. 例えば:
これはうまくいくようですが、もっと良い方法があるはずです。マップは再帰よりもいくらか優れていると思いますが、それでも多すぎます。状態を別の方法で表現した方が簡単でしょうか?
また、私のコードを自由に批判してください。私は自分が何をしているのかよくわかりません。
編集: 可能であれば、タワーの数が常に 3 であると想定しないでください。
common-lisp - 名前付きディスクのあるハノイの塔
割り当てのために、私は名前付きディスクを使用してCommonLISPでハノイの塔を作成する必要があります。次のような出力を取得する必要があります。
しかし、私が作成したプログラムを実行すると、次のような出力が得られます。
これが私のコードです:
コードの問題は、呼び出された後に結果を破棄するだけなので、明らかにディスクの移動関数です。しかし、どのグローバル変数からプッシュおよびポップする必要があるかを正確に判断できるかどうかはわかりません。タワーを表すために大きなリストを使用し、ペグをサブリストにすることをいじりましたが、リストのどの部分を変更するかを決定するという同じ問題があります。どんな助けでもいただければ幸いです。完全に行き止まりになっているような気がします。
recursion - CommonLispのハノイの塔
そもそも自分が何をしているのか正確にはわからないので、これは漠然とした質問になると思いますが、ここで説明します。
私はリストを使って一般的なlispでハノイの塔の問題をしなければなりません。基本的に、関数は文字列(名前)のリストを取得し、それらをペグBを使用してペグAからペグCに移動し、リスト内の順序と同じ順序に保ちます。
私はこれまでlispを使ったことがなく、構文を理解するのが非常に難しいと感じています。これはこれまでの私のコードですgoo関数はhanoiの仕事です
私の問題は再帰呼び出しにあります。私は正確に何をすべきかについて非常に混乱しています。最初のリストの最初の文字列を別のペグに移動する必要があることは明らかですが、どのペグやリストの操作方法すらわかりません。goo関数に渡された変数を使用する必要があるように感じますが、関数で変数を変更しても外部の変数は変更されないため、編集方法がわかりません。
今、私はエラーに遭遇しています
* --SYSTEM ::%EXPAND-FORM:(GOO(1- LENG)FROM VIA TO)はラムダ式である必要があります
これは再帰的な呼び出しなので、なぜそう言っているのかわかりません。
基本的に、自分のアプローチが適切かどうかさえわからないため、どこで続行するか、どこで再開するかについて、いくつかのヒントやコツが必要です。何でも大歓迎です。ありがとう
recursion - Lisp で再帰的なハノイの塔を解く
Lisp での私のコードは次のとおりです。
私はLispが初めてで、何が間違っているのか手がかりがありません。私は何時間もこれに携わってきたので、これを手伝っていただければ幸いです。
ありがとう。