Проверка значения на “старость”

184
27 августа 2018, 22:40

Есть переменная. Она в бесконечном цикле выдаёт значения типа:

1 - 1-й шаг
1 - 2-й шаг
1 - 3-й шаг
1 - 4-й шаг

Эти значения могут изменяться. То есть:

2  - 1-й шаг
1  - 2-й шаг
4  - 3-й шаг
10 - 4-й шаг

Нужно сделать так, чтобы при повторяющемся значении результат выводился только 1 раз. То есть:

Значения:

1
1
1
1

Результат:

1

Но! Суть в том, что эти значения могут идти ещё и так:

2
1
2
1
2
1
2

Получается, нужно сделать проверку старой переменной на ещё одну переменную, которая шла перед старой...

То есть вариант проверки типа

int i = 0;
int variable = 10;
if (i != variable) {
    i = variable;
    //Do something...
}

откладывается, ибо значение там постоянно меняется.

Вот то, что у меня есть на данный момент:

for (int i = 0; i <= 32; i++)
{
    float x = vam.ReadFloat((IntPtr)0xC7DD58 + 48 + 160 * i);
    float y = vam.ReadFloat((IntPtr)0xC7DD58 + 52 + 160 * i);
    float z = vam.ReadFloat((IntPtr)0xC7DD58 + 56 + 160 * i);
    float nx = 0;
    float ny = 0;
    float nz = 0;
    if (x > 0f && x < 60f && y < 0f && z>0f && z < 392f)
    {
        nx = x;
        ny = y;
        nz = z;
    }
    if (ny < -216 && ny > -350 && nx > 4 && nx < 60 && nz > 350 && nz < 391)
    {
        if (ny != old_y && nx != old_x)
        {
            old_z = nz;
            old_y = ny;
            old_x = nx;
            Console.WriteLine("======================= NORMALIZE ==========================");
            Console.WriteLine(nx);
            Console.WriteLine(ny);
            Console.WriteLine(nz);
            Console.WriteLine("=======================================================");
        }
    }
    else
    {
    }
}

Что этот код выдаёт:

======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================

Что он должен выдавать:

======================= NORMALIZE ==========================
14.18555
-286.5293
390.2
=======================================================
======================= NORMALIZE ==========================
50.3623
-223.5
390.2
=======================================================
Answer 1

Для хранения всех старых значений и проверки значения на "старость" можно использовать, например, массив, List или Set.

Пример на Java с использованием HashSet:

HashSet<Double> usedValues = new HashSet<>();
for (int i = 0; i < 10; i++)
{
    double value = Math.floor(Math.random() * 5);
    if (!usedValues.contains(value))
    {
        System.out.println("New value: " + value);
        usedValues.add(value);
    }
    else
    {
        System.out.println("Old value: " + value);
    }
}

Пример вывода:

New value: 2.0
Old value: 2.0
New value: 0.0
Old value: 2.0
New value: 3.0
New value: 4.0
Old value: 3.0
Old value: 3.0
Old value: 4.0
Old value: 4.0

READ ALSO
Не перебирает адреса в базе правильно

Не перебирает адреса в базе правильно

Я составил скрипт, который перебирает адреса в моей таблице и отмечает отправленные

187
Как передать данные с laravel в react компонент

Как передать данные с laravel в react компонент

Мне нужно передать данные с blade (с бд данные) в react компонентГде-то я прочитал, что можно передать так:

291
Поиск в двумерном массиве - PHP

Поиск в двумерном массиве - PHP

Есть массив $idname:

161
Реализация наград и рейтинга пользователей

Реализация наград и рейтинга пользователей

Вопрос довольно абстрактный:

191