Math Square: このように: http://www.ps-heine.de/archives/416
- Math Square は、左から右、上から下に解く必要があります。
- 操作規則の順序は適用されません。
- 各番号は時間内のみご利用いただけます。
小学校の頃から大好きだったのですが、残念ながら本は見つかりませんでした。自分で作ろうと思ったのにがっかりしました。
私はまだ構想段階ですが、これまでに行った手順について説明させてください。
まず、配列を作成します$matrix
。
- 行列の各行の配列が含まれています。
- 各行配列は、実際の行の列/セルを保持します。
- 各セルは、パラメータ「id」、「type」、および「value」を持つ配列です。
ここで配列の例を表示します: http://pastebin.com/RdBmxvjq
この例では、すでに演算子を確認できます。
演算子「+」、「-」、「*」、「/」のいずれかをランダムに返す関数 operator() があります。
当然のことながら、最初に演算子を含めて、それらと一緒に行列に適合する数値を見つけるよりも、その逆よりもはるかに簡単です。
この時点で、私はすでに終了している可能性があります。
これで、乱数を入れて (もちろん配列から、繰り返さないので)、行と列の結果を計算し、数字を削除して、パズルを完成させることができました!
師団長がいなかったら!
もちろん、私 /最終ユーザーがプライム数を分割しようとしたり、結果として小数を取得しようとしたりしたくありません。
これで、除算記号の前に入れるのに最適な数が見つかるまで、ループして「ブルートフォース」することができましたが、これはとても... ひどいです
最初にすべての分割が意味のある結果になるようにする方法があればいいのに...結果...
何か案は?
編集:
ちょっと理にかなっていると思われる、私が今持っていたランダムな考えをいくつか追加させてください。
まず、パズルの数字を変更すると、パズル全体に反映されます。したがって、すべてのタイプのブルートフォースを含む数値の変更は、パフォーマンスキラーです (そのナフという事実に加えて)。
したがって、論理的な結果は、最初に分割が発生した場所にのみ数字を含め始めることです。
最初に他の数を掛けて計算する「積」に数を使用して、その数が素数でないことを確認し、因数を持たせることができます。
しかし、因数の 1 つが素数で、再び割り算が発生した場合はどうなるでしょうか。
非素因数を取得するために別の数を掛けた数を繰り返し使用すると、パズル内の数の多様性が減少し、全体の重要性が低下します。
では、パズルを「リバース エンジニアリング」すると、掛け算はどうなるでしょうか。それらは自動的に「分割」になり、問題は最初からやり直します。
何人かの数学者に、私をバカと呼んで、驚くほど簡単な解決策を提示させてください...