Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Друзья! Буду благодарен за любую информацию.
Тема такая: есть массив, состоящий из 15 элементов. Каждый элемент может принимать только одно из трех числовых значений: 1,2 или 3. Причем значение присваивается случайно.
Например: {1,1,3,1,3,2,1,3,3,3,2,2,3,2,1}. Количество таких массивов N.
Вопрос: как исследовать эти массивы, есть ли какая-нибудь закономерность у них? Есть ли среди них повторяющиеся шаблоны(например, допустим, что структура {...3,3,2,2...} повторяется у 70% массивов), и есть ли алгоритм поиска таких структур?
Сделайте фильтр.
Например:
Друзья! Буду благодарен за любую информацию.
Тема такая: есть массив, состоящий из 15 элементов. Каждый элемент может принимать только одно из трех числовых значений: 1,2 или 3. Причем значение присваивается случайно.
Например: {1,1,3,1,3,2,1,3,3,3,2,2,3,2,1}. Количество таких массивов N.
Вопрос: как исследовать эти массивы, есть ли какая-нибудь закономерность у них? Есть ли среди них повторяющиеся шаблоны(например, допустим, что структура {...3,3,2,2...} повторяется у 70% массивов), и есть ли алгоритм поиска таких структур?
Вам нужно знать какая комбинация сколько раз встречалась ?
Если да, то это простая комбинаторная задача.
Вам нужно знать какая комбинация сколько раз встречалась ?
Если да, то это простая комбинаторная задача.
Да, только не я задаю комбинацию, которая меня интересует. Нужен алгоритм поиска, который найдет наиболее встречающиеся комбинации элементов в массивах.
Да, только не я задаю комбинацию, которая меня интересует. Нужен алгоритм поиска, который найдет наиболее встречающиеся комбинации элементов в массивах.
Комбинация естественно не известно. Но если она состоит жестко из 15-и элементов и каждый элемент может принимать только значения 1,2,3, то у меня такой вопрос к вам:
Вы умеете преобразовать цифры из двоичных систем в десятичную ? Если да, то считайте что вместо двоичной системы имеете троичную 15-и разрядную систему: от 000000000000000 до 222222222222222. Количество их будет К=3^15= 14348907
Так вот, объявляете массив из К элементов, например так int m10[14348907]={0}; Можно брать short int, чтобы сэкономить память.
Берете еще один массив м3[15] для хранения приходящих элементов со значениями 1, 2 или 3 (для троичной системы они будут 0, 1 или 2);
Надо преобразовать содержание м3 в десятичную цифру. Его будем хранить в поле с названием index. И делаете последний шаг: м10[index]++;
Каждый элемент массива м10 будет показывать какая комбинация сколько раз была. Это самый быстрый способ без сравнения и без поиска.
Комбинация естественно не известно. Но если она состоит жестко из 15-и элементов и каждый элемент может принимать только значения 1,2,3, то у меня такой вопрос к вам:
Вы умеете преобразовать цифры из двоичных систем в десятичную ? Если да, то считайте что вместо двоичной системы имеете троичную 15-и разрядную систему: от 000000000000000 до 222222222222222. Количество их будет К=3^15= 14348907
Так вот, объявляете массив из К элементов, например так int m10[14348907]={0}; Можно брать short int, чтобы сэкономить память.
Берете еще один массив м3[15] для хранения приходящих элементов со значениями 1, 2 или 3 (для троичной системы они будут 0, 1 или 2);
Надо преобразовать содержание м3 в десятичную цифру. Его будем хранить в поле с названием index. И делаете последний шаг: м10[index]++;
Каждый элемент массива м10 будет показывать какая комбинация сколько раз была. Это самый быстрый способ без сравнения и без поиска.
Круто!
Комбинация естественно не известно. Но если она состоит жестко из 15-и элементов и каждый элемент может принимать только значения 1,2,3, то у меня такой вопрос к вам:
Вы умеете преобразовать цифры из двоичных систем в десятичную ? Если да, то считайте что вместо двоичной системы имеете троичную 15-и разрядную систему: от 000000000000000 до 222222222222222. Количество их будет К=3^15= 14348907
Так вот, объявляете массив из К элементов, например так int m10[14348907]={0}; Можно брать short int, чтобы сэкономить память.
Берете еще один массив м3[15] для хранения приходящих элементов со значениями 1, 2 или 3 (для троичной системы они будут 0, 1 или 2);
Надо преобразовать содержание м3 в десятичную цифру. Его будем хранить в поле с названием index. И делаете последний шаг: м10[index]++;
Каждый элемент массива м10 будет показывать какая комбинация сколько раз была. Это самый быстрый способ без сравнения и без поиска.
Классный вариант, очень быстрый. Только он не различает разную длину вектора, например 1123(0012) будет так же как и 111123(000012). В скобках указано ваше кодирование в троичной системе счисления, видно, что они будут давать один и тот же индекс.
Умничать не надо. Все это учтены и поэтому уточнил, как он и хотел: Но если она состоит жестко из 15-и элементов и каждый элемент может принимать только значения 1,2,3, то...
Естественно можно сделать универсальный вариант, с учетом размерности. Это же частный случай. И реализация его будет легко. Код будет небольшой, наверно 10-15 строк.
И еще размер можно фиксировать а пустые разряды заполнить нулями. В программировании надо взвешивать: универсальность или простое решение. Вот моё решение можно реализовать за 10 минут.
Умничать не надо. Все это учтены и поэтому уточнил, как он и хотел: Но если она состоит жестко из 15-и элементов и каждый элемент может принимать только значения 1,2,3, то...
Естественно можно сделать универсальный вариант, с учетом размерности. Это же частный случай. И реализация его будет легко. Код будет небольшой, наверно 10-15 строк.
И еще размер можно фиксировать а пустые разряды заполнить нулями. В программировании надо взвешивать: универсальность или простое решение. Вот моё решение можно реализовать за 10 минут.
А можно в виде кода, а то я не совсем понял, пжлста!
А можно в виде кода, а то я не совсем понял, пжлста!
В массиве m3 будет формироваться очередная порция из чисел 1,2,3. После чего каждый раз надо вызвать функцию Count.
А в m10 будут собираться количество одинаковых комбинаций. Но чтобы увидеть какая комбинация сколько раз повторяется надо и еще сделать обратное преобразование, т.е соответствующий индекс массива m10 преобразовать 15 разрядную троичную систему.
Друзья! Буду благодарен за любую информацию.
Тема такая: есть массив, состоящий из 15 элементов. Каждый элемент может принимать только одно из трех числовых значений: 1,2 или 3. Причем значение присваивается случайно.
Например: {1,1,3,1,3,2,1,3,3,3,2,2,3,2,1}. Количество таких массивов N.
Вопрос: как исследовать эти массивы, есть ли какая-нибудь закономерность у них? Есть ли среди них повторяющиеся шаблоны(например, допустим, что структура {...3,3,2,2...} повторяется у 70% массивов), и есть ли алгоритм поиска таких структур?
Телепатическим путем думаю подойдет ArrayCompare