Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 25

 
IgorM:

Quiero almacenar los datos de forma compacta - una línea, un entero

No funcionará. Se necesitan 3 bits para codificar 6 valores. El entero tiene 32 bits, se necesitan 36 bits para codificar 12 números.

La cuestión es por qué necesitas un almacenamiento compacto. Lo más probable es que el objetivo final sea diferente y se pueda alcanzar de otra manera.

 
TheXpert:

No funcionará. Se necesitan 3 bits para codificar 6 valores. El entero tiene 32 bits, se necesitan 36 para codificar 12 números.

Sí, probablemente sea más fácil hacer lo que aconseja granit77
 

Bueno... como una opción.

granit77:
Desplázate hacia la región positiva en 2 unidades para eliminar el 0 y el -1 (seguido de la restauración después de la lectura) y podrás formar fácilmente un número entero.
Es posible escribir sus índices en lugar de los propios números, entonces se puede generar cualquier número. Lo principal es no superar los 10... Aunque si se examina con detenimiento, no son más de 36 al menos.
 

También se puede utilizar la repetición de datos (como en la compresión de imágenes). O bien, puede escribir diferentes valores en el mismo espacio de memoria. Se puede ahorrar en índices dando un solo nombre a todo tipo de cosas. Incluso podría crear un servicio de este tipo, ya que estaría muy 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|

Quiero almacenar datos de forma compacta: una línea, un entero


Cambiar a la notación pentamétrica donde puedo convertir una cadena de números en uno. Para el binario, tenía funciones listas para usar

 
Vinin:


Cambia a un sistema numérico pentatónico en el que puedes convertir una cadena de números en uno. Para el binario, tenía funciones ya hechas

Ya lo he pensado, no hay ningún aparato matemático preparado para almacenar varios números de 5 dígitos en un int?
 
IgorM:
Ya he pensado en esto, ¿no hay ninguna matriz preparada para almacenar varios números de 5 dígitos en un int?

No se tarda mucho en hacer uno. Tanto para la codificación como para la descodificación
 

Para la codificación se puede utilizar la siguiente fórmula

{a1,a2,a3,a4,a5}

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

La decodificación es un poco más complicada. Pero si vamos a un bucle, no hay problema con 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;

 

Ni siquiera puedo formular una consulta para un motor de búsqueda :(((

Quiero hacer algún tipo de comparación de similitud... correlación... varias matrices con datos numéricos.

así:

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 |

las matrices dadas tienen diferencias mínimas, ¿cómo se puede analizar esto programáticamente?

 
IgorM:

Ni siquiera puedo formular una consulta para un motor de búsqueda :(((

Quiero hacer algún tipo de comparación de similitud... correlación... varias matrices con datos numéricos.

así:

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 |

las matrices dadas tienen diferencias mínimas, ¿cómo se puede analizar esto programáticamente?


si y si otra vez. Yo empezaría con a1a1