問題タブ [cryptarithmetic-puzzle]

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.

0 投票する
5 に答える
4383 参照

c# - 暗号を解く効率的な方法

こんにちは私はCryptarithmsと呼ばれる有名な種類の単語と数字ベースのパズルのサブセットであるこのパズルに出くわしました。あなたが次のような表現をしているとしましょう

SEND + MORE = MONEY

ここで興味深いのは、各アルファベットが0から9までの一意の数字を表していることです。一般化されたソルバーを書きたかったのですが、結局はそのためのブルートフォースソリューションを書きました。どうすればそれを解決できますか?

述語論理や集合論で解けると思います。そして、私は特にC#またはPythonベースのソリューションを見つけることに興味があります。誰。?

0 投票する
7 に答える
3353 参照

java - 口頭算術/英字学へのより効率的なアプローチ?

Send + More = Money をご存知の方も多いと思います。さて、私は現在 Java を学んでおり、演習の 1 つは HES + THE = BEST を解かなければならないことです。

さて、これまでのところ、if-for-while-do ループを使用できる/使用する必要がありますが、他には何もありません。それを解決するにはさまざまな方法があると思いますが、それは私が行っている演習のポイントではありません。最も効率的な方法で if-for-while-do ループを使用できる必要があります。

私の問題?それを効率的に解決する方法が思い浮かびません!私はこれを思いつきました。これはパズルを解決しますが、おそらく最悪の効率的な方法です。

このパズルを解くには、合計で約 15000 回の奇妙なループ サイクルが必要です。それは私の意見ではたくさんあります。ポインタはありますか?

0 投票する
1 に答える
730 参照

prolog - 変数を含むプロローグ ドット積 (制約の充足)

私はプロローグの課題に取り組んでおり、現在、解決策に非常に近づいています。したがって、この問題は制約充足問題であり、特定の条件が真となるような一連の変数の値を見つける必要があります。具体的には、与えられた 3 つの単語 (W1、W2、W3) に、W1+W2=W3 となるように変数を割り当てます。この例は、SEND+MORE=MONEY、または IT+IS=ME です。

制約は次のとおりです。(1) 正しく合計する必要がある、(2) 開始文字を 0 にすることはできない、(3) すべての変数が異なる必要がある。そして、それは一般的な単語の問題で機能する必要があります。それらが正しく加算されることを確認しようとすると、私の問題が発生します (他の条件を満たし、問題を理解しています)。2番目の単語の問題に関しては、次のようにする必要があります。

そこで、次のように、特定の長さで 10 のべき乗のリストを作成する関数を作成しました。

[I、T、I、S、M、E] などの文字の実際のリストもあります。次に、powlist から係数のリスト (その部分については後で説明します) を作成したので、[10,1,10,1,-10,-1] のようになります。これを行ったので、この係数のリストと文字のリストの間の内積を取り、それがゼロであれば、制約が満たされます。しかし、この内積理論を機能させることはできません。現在、次のような行があります。

しかし、これは私に次のエラーを与えています:

! is/2 の引数 2 でインスタンス化エラーが発生しました
! 目標: _102 は 0+10.0*_109 です

(原子だけでなく)変数で機能するように内積を定義する方法がわかりません。残りのコードはすべて完全に機能します (これは入門プロローグ コースで非常によくある質問であり、怠惰な人には答えたくないので、ここには載せたくありません)。あなたたちは何を提案しますか?

0 投票する
2 に答える
2010 参照

prolog - Prolog覆面算パズル

私はPrologを使用して覆面算パズルを解くように頼まれました:

上記はパズルです。どこに問題があるのか​​わかりません。結果は常にfalseを返します。さらに、SWI-Prologでライブラリを使用することは許可されていません。

サンプルクエリ:

0 投票する
2 に答える
724 参照

loops - 暗号の各文字に割り当てられた番号を決定する方法は?

暗号を解く必要がある課題があります。しかし、インターネットで見たアルゴリズムを理解できません。これを行う方法を簡単な言葉で説明できる人はいますか?

0 投票する
4 に答える
200 参照

c++ - スタック対整数

データ構造のクラスの暗号演算を解くプログラムを作成しました。教授は、リンクされたノードで構成されるスタックを利用して、どの文字をどの数字に置き換えたかを追跡することを勧めましたが、整数でも同じことができることに気付きました。スタック {A, 1, B, 2, C, 3, D, 4} の代わりに、1234 で同じ情報を保持できます。

しかし、私のプログラムは、彼が私たちに与えた見積もりよりもはるかに遅く実行されているようです. スタックがはるかに効率的に動作する理由を誰かが説明できますか? メソッド (push、pop、top など) を何度も呼び出すのではなく、「ソリューション」にメソッドを 1 つ追加するだけで、より高速になると想定していました。

これは自由回答形式の質問ではないため、クローズしないでください。さまざまな方法で実装できますが、C++ の中心部で、Stack を介してデータにアクセスすると、int に格納して mod によって抽出するよりもパフォーマンスが向上する理由を知りたいと思います。

これは宿題ですが、私は実際に助けを必要としていません。

ありがとう。新しいことを学ぶのが待ちきれません!

編集(いくつかのコードを追加)

letterAssignments はサイズ 26 の int 配列です。SEND + MORE = MONEY のような問題では、A は使用されないため、letterAssignments[0] は 11 に設定されます。使用されるすべての文字は 10 に初期化されます。answerNum は、固有の文字があるため、桁数が多くなります (この場合は 8 桁)。

見たい場合の 2 つのヘルパー メソッド:

0 投票する
6 に答える
6671 参照

java - サブクラス インスタンス データをスーパークラス コンストラクターに渡す Java

スーパークラスのコンストラクターを呼び出す前に、Java でサブクラスのインスタンス変数の値を設定する方法があるかどうかは誰にもわかりません。私が達成しようとしていることの簡単な概略図を以下に示します。サブクラスのタイプに応じて、スーパークラスで定義されたインスタンス変数を別々に設定する必要がありますが、共通の非コンストラクター コードを共有できるようにしたいと考えています。サブクラスの異なるインスタンス。

これを行うためのきれいな方法はありますか?おそらく、私が見逃しているコーディングパターンのようなものですか? アイデアをお寄せいただきありがとうございます。

0 投票する
2 に答える
236 参照

prolog - ゴール/クエリ内の変数の数が異なる場合の解決方法 - Prolog Constrain Solver

これは、プロローグ制約解決メカニズムを使用した、古典的な SENDMORY crypt-arithmetic problem solutiong のスニペットです。

これを実行するには、次のような目標/クエリを送信します。

そして、それは私に数字の可能な解決策を返します.

ここで、私の質問は、このように変数 (S、E、N など) を「ハードコーディング」したくないということですが、目標/クエリは変数の数を示します。たとえば、渡すクエリが次のような場合:

次に、SENDM の値のみを計算し、他の変数は適用できないと想定する必要があるため、それらの変数に 0 を割り当ててから計算を続行します。次にクエリを実行するときは、クエリで異なる数の変数を渡す場合があります..例のように:

プログラムは同様に計算する必要があります。

私が達成しようとしているのは、上記のシナリオのより一般化された問題ソルバーです。これに関する指示は本当に感謝しています。私はプロローグが初めてで、ECLIPSE 制約ソルバーを使用しています。ありがとうございました。

0 投票する
6 に答える
3852 参照

performance - Prolog での口頭演算の高速な実装

私はすでに Prolog で動作する一般化された口頭算術ソルバーを作成しましたが、遅すぎます。SEND + MORE = MONE Y という単純な式を実行するだけで 8 分かかります。

0 投票する
1 に答える
3146 参照

prolog - 暗号算数パズル (プロローグ)

「生成とテスト」を使用して、暗号算術パズルを解く Prolog コードを作成するように依頼されました。たとえば、私は取得solve([R,O,B],[B,E,R,T],[N,O,R,E,S])し、文字の割り当てを見つける必要があります。だから私はこのコードを書いた:

しかし、バグがあり、見つけることができません...助けてもらえますか?