Объясняю свой алгоритм решения данного задания. Берём и запихиваем все строки в двумерный чар массив. Потом построчно сравниваем i-j элемент столбца с i+1-j. Если это одинаковые символы - мы прибавляем к счётчику +1. Потом сравниваем i-j+1 и i+1-j+1, если они равны, то мы прибавляем +1 при условии того, что один из этих элементов равен одному из предыдущих Ну а потом если наш счётчик составляет 2 - мы уже знаем что этот узор не симпатичный. В противном же случае мы идём дальше до size-1. (в нашем случае size=4 поэтому 4-1=3) Скриншот с результатом работы, скоростью и самим кодом прикрепил. UPD: Ещё можешь уменьшить кол-во итераций, во втором цикле в условии можно сделать strlen(a[i])-1
namespace FileApp { class MainClass { private const string FILE_PATH = ""; //Запишите сюда путь к файлу private const string PHRASE = ""; //Запишите сюда заданный текст
public static void Main(string[] args) { string[] rows = File.ReadAllLines(FILE_PATH);
foreach (var row in rows) { //Если нужно сделать это все независимым к регистру, то раскоментируйте это и закоментируйте вариант нижу //if(row.ToLower().Contains(PHRASE.ToLower())) //{ // Console.WriteLine(row); //}
if (row.Contains(PHRASE)) { Console.WriteLine(row); } } } } }
Берём и запихиваем все строки в двумерный чар массив.
Потом построчно сравниваем i-j элемент столбца с i+1-j. Если это одинаковые символы - мы прибавляем к счётчику +1.
Потом сравниваем i-j+1 и i+1-j+1, если они равны, то мы прибавляем +1 при условии того, что один из этих элементов равен одному из предыдущих
Ну а потом если наш счётчик составляет 2 - мы уже знаем что этот узор не симпатичный.
В противном же случае мы идём дальше до size-1. (в нашем случае size=4 поэтому 4-1=3)
Скриншот с результатом работы, скоростью и самим кодом прикрепил.
UPD:
Ещё можешь уменьшить кол-во итераций, во втором цикле в условии можно сделать strlen(a[i])-1
using System.IO;
namespace FileApp
{
class MainClass
{
private const string FILE_PATH = ""; //Запишите сюда путь к файлу
private const string PHRASE = ""; //Запишите сюда заданный текст
public static void Main(string[] args)
{
string[] rows = File.ReadAllLines(FILE_PATH);
foreach (var row in rows)
{
//Если нужно сделать это все независимым к регистру, то раскоментируйте это и закоментируйте вариант нижу
//if(row.ToLower().Contains(PHRASE.ToLower()))
//{
// Console.WriteLine(row);
//}
if (row.Contains(PHRASE))
{
Console.WriteLine(row);
}
}
}
}
}