Qualquer pergunta de um PROFI para um SUPER PROFI - 1. - página 25

 
IgorM:

Eu quero armazenar dados de forma compacta - uma linha, um número inteiro

Não vai funcionar. São necessários 3 bits para codificar 6 valores. O número inteiro tem 32 bits, você precisa de 36 bits para codificar 12 números.

A questão é por que você precisa de um armazenamento compacto. Muito provavelmente o objetivo final é diferente e alcançável de uma maneira diferente.

 
TheXpert:

Não vai funcionar. São necessários 3 bits para codificar 6 valores. O inteiro tem 32 bits, você precisa de 36 para codificar 12 números.

Sim, provavelmente é mais fácil de fazer como o granit77 aconselhado
 

Bem... como uma opção.

granit77:
Desloque-se para a região positiva por 2 unidades para remover 0 e -1 (seguido de restauração após a leitura) e você pode facilmente formar um número inteiro.
É possível escrever seus índices em vez dos próprios números, então quaisquer números podem ser gerados. O principal é não exceder 10... Embora em exame mais atento, não mais do que 36, pelo menos.
 

Alternativamente, pode-se usar a repetição de dados (como na compressão de imagens). Ou, você pode escrever valores diferentes para o mesmo espaço de memória. Você pode economizar nos índices dando um nome a todos os tipos de coisas. Você pode até mesmo criar tal serviço - ele seria solicitado :)

 
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|

Quero compactar dados - uma linha, um número inteiro


Mudar para a notação de pentâmetro onde posso converter uma seqüência de números em um. Para binário, eu tinha funções prontas para uso

 
Vinin:


Mude para um sistema de números pentatônicos onde você pode converter uma seqüência de números em um. Para binário, eu tinha funções prontas

Já pensei sobre isso, não existe um aparelho de matemática pronto para armazenar vários números de 5 dígitos em um só int?
 
IgorM:
Já pensei sobre isso, não existe uma matriz pronta para armazenar vários números de 5 dígitos em um único int?

Não leva muito tempo para fazer um. Tanto para a codificação como para a decodificação
 

A seguinte fórmula pode ser usada para a codificação

{a1,a2,a3,a4,a5}

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

A decodificação é um pouco mais complicada. Mas se formos para um loop, não há problema com ambos

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;

 

Eu não consigo nem formular uma consulta para um mecanismo de busca :(((

Quero fazer algum tipo de comparação de similaridade? correlação? várias matrizes com dados numéricos.

assim:

matriz1: matriz2:

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

as matrizes dadas têm diferenças mínimas, como isso pode ser analisado de forma programática?

 
IgorM:

Eu não consigo nem formular uma consulta para um mecanismo de busca :(((

Quero fazer algum tipo de comparação de similaridade? correlação? várias matrizes com dados numéricos.

assim:

matriz1: matriz2:

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

as matrizes dadas têm diferenças mínimas, como isso pode ser analisado de forma programática?


se e se novamente. Eu começaria com a1a1

Razão: