そこで私は、アルゴリズムとパターン認識への入り口として、この単純な数予測アルゴリズムに取り組んでいます。2 から始まり、28 まで 2 ずつ増加する線形の数字 (この場合は 14) の文字列が必要です。
プログラムは、各数値から前の数値を引いて、各数値の差を計算します。次に、すべての違いが同じであることを確認し、最後の数字に違いを追加して画面に出力します。
差が毎回 0 であると考えて、最後の数字 28 と次の数字を出力することを除けば、問題なく動作します。このような他の質問があるようですが、非線形シーケンスでそれを行う方法を尋ねており、誰も私の問題を抱えていません。
考えられることはすべて試しましたが、それでも違いを判断できません。おそらく、私が見逃しているのは本当に明らかなことです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace number_predition_with_constant
{
class Program
{
static void Main(string[] args)
{
int[] sequence = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28 }; //all differ by 2. Diff = 2.
Console.WriteLine(sequence);
Console.WriteLine("");
int[] differences = {};
int legnth = sequence.Length;
int diff = 0; //when not given value, some other instances not recognised
int j = 0;
//find difference between each number.
for (int i = 0; i == legnth-1; i++)
{
j = i + 1;
diff = sequence[j] - sequence[i];
differences[i] = diff;
}
//Print the difference between each number.
Console.Write("Difference: ");
Console.WriteLine(diff);
//Check all diffs are same. If not the same, print "Error"
for (int i = 0; i == legnth-1; i++)
{
if (differences[i] != differences[i+1])
{
Console.WriteLine("Error");
}
}
//calculate next number and print.
Console.Write("There are: ");
Console.Write(legnth);
Console.WriteLine(" Numbers in the sequence");
legnth = legnth - 1;
int next = sequence[legnth] + diff;
Console.Write("The next Number in the sequence is: ");
Console.WriteLine(next);
Console.ReadKey(); //Stop Console from closing till key pressed
}
}
}