Поиск совпадений в массиве - C#
Формулировка задачи:
Добрый день. нужно реализовать алгоритм на c#.
Вводим массив чисел, например:
1,5,4,6,2,12,16,3,8,...,6...
На каждом шаге, программа проверяет совпало ли последнее введенное число с одним из предыдущих, т.е. когда мы ввели 6, компьютер увидит, что число 6 уже было и проверит, совпадает ли предпоследнее число с предыдущим перед ранее введенной 6, т.е. равно ли предпоследнее число 4, если не равно, то идем дальше. и так, пока последнее введенное и предпоследнее введенное числа совпадут с двумя подрядыдущими числами из ранее введенных.
например, если предпоследнее число из выше указанных равно 4, то мы пишем "ура", а если не равно, то идем дальше. Ввели, допустим, 16, оно совпало с одним из ранее введенных. проверяем предыдущее. это 6. а в уже введенном массиве перед 16 идет 12, значит проверяем дальше. и так, пока 2 числа не повторятся.
Сам алгоритм я понимаю, а вот записать его на C# не могу. Предполагаю, что сделать это можно с помощью while(), но не получается реализовать сам алгоритм. Помогите, пожалуйста, с написанием.
Решение задачи: «Поиск совпадений в массиве»
textual
Листинг программы
List<int> intValues = new List<int>();
int curValue = 0, x;
while(true)
{
Console.Write("\nВведите число: ");
try{ curValue = Convert.ToInt32(Console.ReadLine()); }
catch { break; }
// Засекаем последнее вхождение "введенного" числа
x = intValues.LastIndexOf(curValue);
// Проверка что последнее вхождение "введенного" числа -
// не первый элемент массива и в массиве как минимум 4 числа
if ((x > 0) && (intValues.Count > 2))
// Проверяем на равенство "предпоследние" числа двух "пар"
if (intValues[x-1] == intValues[intValues.Count-1])
{
Console.WriteLine("Ура!");
}
// Не забываем внести в массив "введенное" число :)
intValues.Add(curValue);
}