Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 25

TheXpert
17959
TheXpert  
IgorM:

хочу компактно хранить данные - одна строка одно целое число

Не получится. Для кодировки 6 значений требуется 3бита. В инте 32 бита, надо 36, чтобы закодировать 12 чисел.

Вопрос нафек надо компактное хранение. Скорее всего конечная цель другая и достигаема по-другому.

Igor Makanu
8572
Igor Makanu  
TheXpert:

Не получится. Для кодировки 6 значений требуется 3бита. В инте 32 бита, надо 36, чтобы закодировать 12 чисел.

да, наверное проще сделать как granit77 посоветовал
TheXpert
17959
TheXpert  

Ну... как вариант.

granit77:
Сдвинуть в положительную область на 2 единицы, чтобы убрать 0 и -1 (с последующим восстановлением после считывания) и можно легко формировать целое число.
Можно вместо самих чисел писать их индексы, тогда числа можно вообще любые. Главное не больше 10... Хотя при более детальном рассмотрении не больше 36 как минимум.
Алексей Тарабанов
9164
Алексей Тарабанов  

А еще, можно использовать повторяемость данных (как при сжатии изображений). Или. писать разные значения в одну и ту-же область памяти. Можно экономить на индексах, называя одним именем всякую всячину. Можно даже службу такую создать,- была бы востребована :)

Victor Nikolaev
Модератор
18144
Victor Nikolaev  
IgorM:


| 4,4,1,2,1,1, 1,1,1,1,1,1 |
| 3,3,3,3,3,3, -1,-1,-1,-1,-1,-1|

хочу компактно хранить данные - одна строка одно целое число


Перейти на пятиричную систему исчисления, в которой можно будет преобразовать строку чисел в одно. Для двоичной у меня были функции готовые

Igor Makanu
8572
Igor Makanu  
Vinin:


Перейти на пятиричную систему исчисления, в которой можно будет преобразовать строку чисел в одно. Для двоичной у меня были функции готовые

я об этом уже думал, нет готового мат аппарата чтобы в одном int хранить несколько 5-тиричных чисел?
Victor Nikolaev
Модератор
18144
Victor Nikolaev  
IgorM:
я об этом уже думал, нет готового мат аппарата чтобы в одном int хранить несколько 5-тиричных чисел?

Сделать недолго. И для кодирования, и для раскодирования
Victor Nikolaev
Модератор
18144
Victor Nikolaev  

Для кодирования можно использовать следующую формулу

{a1,a2,a3,a4,a5}

N=a1*5^4+a2*5^3+a3*5^2+a4*5^1+a5*5^0;

С раскодированием немного сложнее. Но если перейти к циклу, то е с тем, и с другим проблем нет

a5=N%5;

N=(N-a5)/5;

a4=N%5;

N=(N-a4)/5;

a3=N%5;

N=(N-a3)/5;

a2=N%5;

a1=(N-a2)/5;

Igor Makanu
8572
Igor Makanu  

даже не могу софрмулировать запрос для поисковика :(((

хочу неким сопсобом сравнить на подобие? корреляцию? несколько матриц с числовыми данными.

примерно так:

матрица1: матрица2:

| 4,4,1,2,1,1, 1,1,1,1,1,1 | | 4,4,1,2,1,1, 1,1,1,1,1,1 |
| 4,4,1,2,1,1, 1,1,1,1,1,1 | | 4,4,1,1,1,1, 1,1,1,1,1,1 |
| 4,4,4,2,1,1, 1,1,1,1,1,1 | | 4,4,4,2,1,1, 1,2,1,1,1,1 |

в приведенных матрицах минимальные отличия, как это можно проанализировать программно?

Денис
865
Денис  
IgorM:

даже не могу софрмулировать запрос для поисковика :(((

хочу неким сопсобом сравнить на подобие? корреляцию? несколько матриц с числовыми данными.

примерно так:

матрица1: матрица2:

| 4,4,1,2,1,1, 1,1,1,1,1,1 | | 4,4,1,2,1,1, 1,1,1,1,1,1 |
| 4,4,1,2,1,1, 1,1,1,1,1,1 | | 4,4,1,1,1,1, 1,1,1,1,1,1 |
| 4,4,4,2,1,1, 1,1,1,1,1,1 | | 4,4,4,2,1,1, 1,2,1,1,1,1 |

в приведенных матрицах минимальные отличия, как это можно проанализировать программно?


if if и ещё раз if. Я бы начал с а1а1