Как реализовать?

aleksfid

Client
Регистрация
17.12.2015
Сообщения
448
Благодарностей
21
Баллы
18
Есть переменная которая постоянно меняет значение.
Как сделать если в ней 3 раза одно и тоже значение, то в другую переменную выводилось yes иначе no
Например:
4 5 44 3 4 48 5 4 3 2 7 5 9 0 так тут нет подряд трех одинаковых значений, то выводим no в другую переменную
25 3 28 9 0 0 3 45 5 5 5 так тут есть подряд три одинаковых значения ( подряд три пятерки), то выводим yes в другую переменную
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 608
Благодарностей
4 600
Баллы
113
нужно разбивать строку по пробелу в список, или дргим способом. Дальше перебирать список, проверяя равно ли текущее значение следующему. Если равно - апаем счетчик повторений. Если он стал равен 3 - заканчиваем перебор, пишем ЕС. Если меньше 3 - берем след строку. Если текущее значение не равно следующему - обнуляем счетчик повторений и берем след. строку. Если успешно дошли до конца проверки - значит 3 повтора не нашли
 

aleksfid

Client
Регистрация
17.12.2015
Сообщения
448
Благодарностей
21
Баллы
18
нужно разбивать строку по пробелу в список, или дргим способом. Дальше перебирать список, проверяя равно ли текущее значение следующему. Если равно - апаем счетчик повторений. Если он стал равен 3 - заканчиваем перебор, пишем ЕС. Если меньше 3 - берем след строку. Если текущее значение не равно следующему - обнуляем счетчик повторений и берем след. строку. Если успешно дошли до конца проверки - значит 3 повтора не нашли
Можно подробнее? Пока не пойму. А еще лучше сниппетом бы.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 608
Благодарностей
4 600
Баллы
113
строку 25 3 28 9 0 0 3 45 5 5 5 разбиваем, например, по регулярке \d+ и кладём все совпадения в список.
имеем список
25
3
28
9
0
0
3
45
5
5
5

Берем нулевую(25) и первую(3) строку. Сравниваем. Если равны - апаем какой-то счетчик на +1. Если не равны - обнуляем счетчик. Теперь берем первую(3) и вторую(двадцать восемь) строку. Делаем тоже самое. Крутим так, пока не дойдем до конца списка, значит ответ НОУ, или пока наш счетчик не будет равен 3, значит ответ ЕС.
Не знаю, куда еще подробнее
 

aleksfid

Client
Регистрация
17.12.2015
Сообщения
448
Благодарностей
21
Баллы
18
строку 25 3 28 9 0 0 3 45 5 5 5 разбиваем, например, по регулярке \d+ и кладём все совпадения в список.
имеем список
25
3
28
9
0
0
3
45
5
5
5

Берем нулевую(25) и первую(3) строку. Сравниваем. Если равны - апаем какой-то счетчик на +1. Если не равны - обнуляем счетчик. Теперь берем первую(3) и вторую(двадцать восемь) строку. Делаем тоже самое. Крутим так, пока не дойдем до конца списка, значит ответ НОУ, или пока наш счетчик не будет равен 3, значит ответ ЕС.
Не знаю, куда еще подробнее
Строки нет. Переменная показатель и имеет всегда разные значения. Она то 3 то 7 то 133, но она не должна 3 раза подряд иметь одно и то же, если же имеет, значит кое что случилось. Вот мне и надо этот случай поймать.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 608
Благодарностей
4 600
Баллы
113
Строки нет. Переменная показатель и имеет всегда разные значения. Она то 3 то 7 то 133, но она не должна 3 раза подряд иметь одно и то же, если же имеет, значит кое что случилось. Вот мне и надо этот случай поймать.
ну значит держи значение переменной в какой-то дополнительной переменной. Когда переменная получает новое значение - сравниваешь её с дополнительной. Если равны - апаешь счетчик. не равны - обнуляешь. Если счетчик равен трем - делаешь, что должен. Перед получением нового значения обязательно сохраняешь текущее значение в эту дополнительную переменную
 
  • Спасибо
Реакции: aleksfid

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

Код:
public static string Check(string text)
        {
            //string text = "25 3 28 9 0 0 3 45 5 5 5";
            string[] temp = text.Split(' ').ToArray();
            var result = temp.Where(str => temp.Count(s => s == str) == 3).Distinct();

            if (result.Count() != 0)
            {
                return "yes";
            }
            return "no";

        }
 
  • Спасибо
Реакции: sentinel

aleksfid

Client
Регистрация
17.12.2015
Сообщения
448
Благодарностей
21
Баллы
18
Код:
public static string Check(string text)
        {
            //string text = "25 3 28 9 0 0 3 45 5 5 5";
            string[] temp = text.Split(' ').ToArray();
            var result = temp.Where(str => temp.Count(s => s == str) == 3).Distinct();

            if (result.Count() != 0)
            {
                return "yes";
            }
            return "no";

        }
Строки нет. Переменная показатель и имеет всегда разные значения. Она то 3 то 7 то 133, но она не должна 3 раза подряд иметь одно и то же, если же имеет, значит кое что случилось. Вот мне и надо этот случай поймать.
Метод дока сработал.
 

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Код:
public static string Check(string text)
        {
            //string text = "25 3 28 9 0 0 3 45 5 5 5";
            string[] temp = text.Split(' ').ToArray();
            var result = temp.Where(str => temp.Count(s => s == str) == 3).Distinct();

            if (result.Count() != 0)
            {
                return "yes";
            }
            return "no";

        }
string[] temp = text.Split(' '); - так правильнее, вызывать на базе массива ToArray() не имеет смысла
 

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