問題タブ [alphametic-question]

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 投票する
7 に答える
3353 参照

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

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

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

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

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

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

java - 簡単な暗号算術パズルを解く Java プログラム

else if (400*T + 40*O + 4*O == 1000*G + 100*O + 10*O + D)編集: プログラムが動作するようになりましたが、パズルを解く鍵となる部分を明確にする必要があります。プログラムのすべての部分を完全に理解したいだけです、ありがとう。

これはレビューのみを目的としており、私はそれを理解するために数時間を費やしました. 変数がすべてゼロになっているか、無限ループになっています。本に書かれているように、ここに質問があります:

「暗号算術パズルでは、数式は文字を使用して記述されます。各文字は 0 から 9 までの数字ですが、2 つの文字が同じであってはなりません。サンプルの問題は次のとおりです。SEND + MORE = MONEY パズルの解は S です。 = 9、R = 8、O = 0、M = 1、Y = 2、E = 5、N = 6、D = 7. 次の暗号算術パズルの解を見つけるプログラムを作成してください: TOO + TOO + TOO + TOO = GOOD 最も単純な手法は、一意の文字 (この場合は T、O、G、D) ごとにネストされたループを使用することです. ループは、0 から 9 までの数字を各文字に体系的に割り当てます. たとえば、最初に T = 0、O = 0、G = 0、D = 0、次に T = 0、O = 0、G = 0、D = 1、次に T = 0、O = 0、G = 0、D = 2 を試す可能性があります。など、T = 9、O = 9、G = 9、D = 9 まで。ループ本体で、各変数が一意であり、方程式が満たされていることをテストします。式を満たす文字の値を出力してください。」

ご覧のとおり、私はすべての for ループを while ループに入れて、すべてを制御しようとしました。(まったく)うまくいかなかったので、コメントアウトしました。