Тяжелая задача

mrgreyarbtr

Пользователь
Регистрация
01.10.2022
Сообщения
99
Благодарностей
30
Баллы
18
Доброго времени суток уважаемые форумчане.
Не могу понять как сделать такую логику:
Есть список в котором есть

Юзер1
Юзер1
Юзер1
Юзер2
Юзер2
Юзер1
Юзер2

Как сделать так, чтобы если три раза или больше подряд встречается "Юзер1", то присвоить значение переменной var1 - "type 3"
Если встречается "Юзер1" ровно 2 раза, то присвоить переменную var1 - "type 2"
И если один раз, то var1 - "type 1".

Например

Юзер1 - type 3
Юзер1 - type 3
Юзер1 - type 3
Юзер2 - type 2
Юзер2 - type 2
Юзер1 - type 1
Юзер1 - type 1
 

username666

Client
Регистрация
20.03.2020
Сообщения
211
Благодарностей
89
Баллы
28
Из списка можно выделить подписок к примеру с содержанием type1 ,далее просто считаем кол-во строк в подсписке. а var1 var2 с помощью логики Switch
P.S получаешь строку с user и выделяешь в подсписок со списка с этим содержанием user, считаешь кол-во строк. Но думаю на c# есть варианты поинтересней )
 
Последнее редактирование:

dmitlife

Client
Регистрация
25.04.2019
Сообщения
43
Благодарностей
26
Баллы
18
Доброго времени суток уважаемые форумчане.
Не могу понять как сделать такую логику:
Есть список в котором есть

Юзер1
Юзер1
Юзер1
Юзер2
Юзер2
Юзер1
Юзер2

Как сделать так, чтобы если три раза или больше подряд встречается "Юзер1", то присвоить значение переменной var1 - "type 3"
Если встречается "Юзер1" ровно 2 раза, то присвоить переменную var1 - "type 2"
И если один раз, то var1 - "type 1".

Например

Юзер1 - type 3
Юзер1 - type 3
Юзер1 - type 3
Юзер2 - type 2
Юзер2 - type 2
Юзер1 - type 1
Юзер1 - type 1
Тут в принципе ничего сложного нет. Если я правильно понял задачу, тут нужно посчитать количество строчек и вернуть всё обратно в список дописав значения к строкам. Нужно только использовать временный список (в варианте с кубиками).
Сделал два варианта решения этой задачки. Один на нескольких кубиках. Другой в 1 кубике C#. Шаблон приложу

Список до работы шаблона и после
до.pngпосле.pngСкрин.png
Вот код
C#:
//объявляем переменную для записи количества строк с совпадением
int count_find_word=0;
//объявляем переменную списка
var my_list = project.Lists["Юзеры"];
// Количество строк Юзеры
int num_ny_ist = my_list.Count;
// Создаём временный список из строк основного
var buff = my_list.ToList();

for(int io=0; io < num_ny_ist; io++){
// Получаем первую строку списка основного и удаляем
string stroka = my_list[0].Trim();
my_list.RemoveAt(0);

var regex_for_find = new System.Text.RegularExpressions.Regex(stroka);
//перебираем в цикле все строки и подсчитываем количество строк со словом
for(int i=0; i < buff.Count; i++)
    {
        var stroka_spiska = buff[i];

        if (regex_for_find.IsMatch(stroka_spiska))
        {
            count_find_word++;
        }
    }


// Записываем результат
my_list.Add(stroka + " - type " +count_find_word); 
count_find_word = 0;
}
Если нужно не точное количество совпадений узнать, а как в задаче:
если три раза или больше подряд встречается "Юзер1", то присвоить значение переменной var1 - "type 3"
То в конце нужно немного изменить вот так.
C#:
if(count_find_word > 3){
    count_find_word = 3;
}

// Записываем результат
my_list.Add(stroka + " - type " +count_find_word);
 

Вложения

Последнее редактирование:
  • Спасибо
Реакции: mrgreyarbtr

mrgreyarbtr

Пользователь
Регистрация
01.10.2022
Сообщения
99
Благодарностей
30
Баллы
18
круто! спасибо!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)