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

 
IgorM:

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

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

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

 
TheXpert:

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

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

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

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

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

 
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|

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


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

 
Vinin:


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

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

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

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

{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;

 

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

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

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

матрица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 |

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

 
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

Причина обращения: