Ошибка System.OutOfMemoryException - C#
Формулировка задачи:
string [,,,] MX= new string [303,100,34,305]
Решение задачи: «Ошибка System.OutOfMemoryException»
textual
Листинг программы
static void Main()
{
string str = @"ааабабвггд";
int period = 2;
var periods = Split(str,period); // получим массив periods[n] строк каждая из которых длиной в 2 символа?
//(P.S. если что, нужно использовать период от 2 до [str.length / 2])
var usedSymbols = str.Distinct(); // usedSymbols будет исходной строкой str без повторяющихся символов?
//(P.S. если что, нужно использовать алфавит из 34 символов - все маленькие русские буквы + пробел)
var result = new Dictionary<char, int[]>(); // не понимаю какого типа будет переменная result >_< на выбор либо char либо массив int[]? или оба сразу?
foreach (var symbol in usedSymbols) //для каждого символа в нашей строке без повторов (если я правильно понял мы тем самым как бы обратились к каждому символу нашего алфавита)
{
var counts = new int[period]; //counts[2]
for (int i = 0; i < period; i++) // i=0;i<2;
counts[i] = periods.Count(f => f[i] == symbol); //ЧТО ЭТО О_О возвращаем кол-во элементов в массиве строк periods? а что за условие (f => f[i] == symbol) ?
result.Add(symbol, counts);//ну тут походу происходит заполнение матрицы позиций
}
foreach (var charCount in result) //вывод на экран букв
{
Console.Write ( charCount.Key + " " );
foreach (int count in charCount.Value) //вывод на экран кол-во встреченых раз
Console.Write(count + " ");
Console.WriteLine();
}
Console.ReadKey();
}
private static List<char[]> Split(string str, int length) // ХЗ ЧТО ЭТО О_О судя по всему переопределние сплита? А что он на выходе вернет?
{
var range = new List<char[]>();
for (int i = 0; i < str.Length; i+=length)
{
var chars = new char[length];
for (int j = 0; j < length; j++)
{
if (str.Length > i + j)
chars[j] = str[i+j];
}
range.Add(chars);
}
return range;
}