C# でプログラムを使用して、次の数字をパターンで特定するにはどうすればよいですか? たとえば、パターン (3、6、9、12) がある場合、次の数字が 15、21 などであることをプログラムでどのように判断しますか? ありがとう。
2 に答える
まず、パターンのタイプを知るか、プログラムでそれを理解する必要があります。線形数パターンは、加算または減算によって増加します。指数パターンは、乗算または除算によって増加します。それで、あなたは最初の数から始めて、違いを決定しなければなりません。次に、次の数値を見て、同じ量だけ増加するかどうかを確認します。もしそうなら、あなたはパターンを持っていて、最後の数字に差を加えるだけです。そうでない場合は、指数関数であり、パターン内の各数値でどれだけ増加するかを判断して、次の数値を投影する必要があります。
コードを見ずに、私はあなたに概念を示すことしかできません。それが役に立てば幸い!これが便利な場合があります。
ダンギット、私の応答はワイヤレス障害で失われました。Lemme再試行:
RPN言語からの組み合わせの幅優先探索としてそれを行うことができます。スタック上のパターンから始めます。スタックのアンダーフローは、シーケンスシードにいることを示しているため無視してください。基本的な演算子と1桁の数字を使用して、表現力と検索スペースを過度に拡大しないことのバランスを取ります。たとえば(そして明らかに、検索スペース内のいくつかの興味深い点のみを表示します):
for +:
3 +: Stack Underflow - ignore
3 6 +: 9
3 6 9 +: 15 - wrong
for *:
3 *: SU
3 6 *: 18 - wrong
for 1:
3 1: 1 - wrong
for + -:
3 + -: SU
3 6 + -: SU
3 6 9 + -: -12 - wrong
for 3 +:
3 3 +: 6
3 6 3 +: 9
3 6 9 3 +: 12
success
next:
3 6 9 12 3 +: 15
3 6 9 12 15 3 +: 18
これにより、シーケンスの最も簡単な説明が作成されます。Samuel Edwin Wardが指摘しているように、私たちが知っている限りでは、次の項目、つまり「バナナ」として4を生成する複雑なアルゴリズムが存在する可能性があります。たとえば、ここにいる多くの人は、このシーケンスの次の用語を即座に「知っています」。
1
2
"fizz"
4
?
(答えは、「明らかに」"buzz"
です。例ではパターンが実際に示されていなくても、私たちの経験だけです。)
編集:オーバーフローではなく、スタックのアンダーフロー:/