Algoritmos para eliminar columnas por diferencias

Algoritmos, fórmulas, estadísticas...
EmiliF
10
10
Mensajes: 28
Registrado: Mié 01 Oct, 2014 9:48 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por EmiliF »

Sólo quería exponer mi manera de enfocar el problema, para dar un poco de luz, como programador experimentado en C#, y que tiene desarrollado un sistema de quinielas, sobre el tema de guardar y acceder a columnas de forma óptima.

Yo lo que hago es utilizar un valor entero (int de 32bits) para cada columna, en Visual Basic creo que se llama "Integer" o "Int32", ya que el procesador es lo que maneja más rápido.

Mi sistema representa cada una de esas columnas, mediante una clase indizable. Si el lenguaje de programación que utilizáis no dispone de clases indizables se puede hacer de una manera más rudimentaria mediante una función que le llegue, el int de la columna i el índice (0 a 13 por ejemplo) del signo que se quiere obtener.

Es decir, es como si transformaras un valor entero en un vector de 14 casillas. La gracia del tema es utilizar operadores lógicos (que son los más veloces para tratar números) con el índice de casilla que le llega para obtener el signo correcto, de alguna forma "desencriptar" en cualquier momento el int y obtener cualquiera de los 14 signos de la columna.

No explico como se hace exactamente, simplemente doy las pistas, tampoco digo que sea la mejor forma de hacerlo, es simplemente la que yo utilizo y os aseguro que es muy rápida y ocupa poca memoria.
Avatar de Usuario
PacoHH
15
15
Mensajes: 21149
Registrado: Lun 20 Oct, 2003 8:03 pm
Ubicación: Almería
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por PacoHH »

Probablemente te interese esto del propio Joan Duatis, él no tiene "secretos".....

http://free1x2.com/foros/viewtopic.php?t=13792
EmiliF
10
10
Mensajes: 28
Registrado: Mié 01 Oct, 2014 9:48 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por EmiliF »

Gracias Paco por el link. He hechado un vistazo al link y he leido algo en principio sin ningún sentido, gente que dice que guarda una columna en un byte o incluso en un bit, creo que decir eso ya es pasarse de listo.
Avatar de Usuario
PacoHH
15
15
Mensajes: 21149
Registrado: Lun 20 Oct, 2003 8:03 pm
Ubicación: Almería
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por PacoHH »

...sigue leyendo... que sí es posible.

Si tienes una forma de numerar las columnas, un bit indica su posición y por la posición del bit se calcula la columna.
EmiliF
10
10
Mensajes: 28
Registrado: Mié 01 Oct, 2014 9:48 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por EmiliF »

No necesito seguir leyendo, no tiene sentido Paco, ya que sólo podrías guardar dos posiciones la 0 y la 1, es lo que cabe en un bit.

Otra cosa es que tengas una variable entera que indique la posición de la columna que en este momento estás analizando, y puedas deducir los signos de la columna mediante esa variable a partir de una función, que por supuesto no sería lo más eficiente, aunque se pueda, pero evidentemente donde se guarde la posición, te reitero, no será en un bit.

En un bit, lo mires como lo mires, solo caben dos estados 0 o 1. Así que no se puede sacar de donde no hay.
Indeciso
14
14
Mensajes: 5585
Registrado: Dom 10 Oct, 2004 8:26 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por Indeciso »

Una columna en un bit:

- Tienes una tabla de bits, de 4782969 posiciones y cada posición representa a una columna.
- Para saber q columna corresponde con q posicion tienes una función (potencias de 3)

Una columna en 3 bytes:

- Divides cada columna en 3 partes de 5 signos:

11111 a 22222

Con un byte puedes representar 256 valores, solo necesitas 243...

COMO SE ECHA DE MENOS A JOAN :( :( :(
Avatar de Usuario
PacoHH
15
15
Mensajes: 21149
Registrado: Lun 20 Oct, 2003 8:03 pm
Ubicación: Almería
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por PacoHH »

EmiliF.... pues no leas, peor para tí...... :wink:

Una combinación se puede definir perfectamente con un bit por columna.

4.782.969 bits -> los 14 triples

1 -> Sí es de la combinación

0 -> No pertenece a la combinación.
EmiliF
10
10
Mensajes: 28
Registrado: Mié 01 Oct, 2014 9:48 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por EmiliF »

Paco lo que ha dicho Indeciso, ya tiene sentido, lo que tu decias era que la posición se guardaba en un bit, cosa que me reconocerás no tiene ningún sentido.
Avatar de Usuario
JoanD
12
12
Mensajes: 2657
Registrado: Vie 19 Dic, 2003 6:35 pm
Ubicación: Barcelona
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por JoanD »

Indeciso escribió: COMO SE ECHA DE MENOS A JOAN :( :( :(
Gracias Jorge por acordarte de mi.

Os leo porque recibo las notificaciones pero ahora mismo he cambiado mi afición a las quinielas por la afición por el biomagnetismo médico (es algo increíble pero me tiene atrapado).

Que tengáis salud i suerte los que todavía jugáis al 1x2.
Saludos

https://www.quinielista.es/dnp1x2/joand/
Peña agrupada en la "Piedra_Filosofal"
Indeciso
14
14
Mensajes: 5585
Registrado: Dom 10 Oct, 2004 8:26 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por Indeciso »

Has hecho muchas cosas por todos con tus utilidades y post!, como para no acordarse de ti!!! ;)

Buena suerte en todo lo que hagas Joan.
Avatar de Usuario
jce2
12
12
Mensajes: 2419
Registrado: Mar 28 Jun, 2005 8:09 pm
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por jce2 »

Que alegría leerte por aquí, maestro.

Seguro que también estás innovando en el biomagnetismo médico, que por cierto me voy a enterar a ver que es....
Imagen[align=center]Rentabilidad desde 2010/11: Ideales 197,2% - Peña 105.3%[/align]
Avatar de Usuario
PacoHH
15
15
Mensajes: 21149
Registrado: Lun 20 Oct, 2003 8:03 pm
Ubicación: Almería
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por PacoHH »

EmiliF escribió:Paco lo que ha dicho Indeciso, ya tiene sentido, lo que tu decias era que la posición se guardaba en un bit, cosa que me reconocerás no tiene ningún sentido.
He dicho "indica" (puntero)

NO he dicho que la guarde. :wink:
Avatar de Usuario
Ondina
14
14
Mensajes: 6740
Registrado: Lun 21 Nov, 2011 4:05 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por Ondina »

No tuve la ocasión de conocer a Joan pero todos hablan maravillas de el.
Ahora me ha dado curiosidad saber que es eso del biomagnetismo medico,hacia el google que me voy!! :-D
EmiliF
10
10
Mensajes: 28
Registrado: Mié 01 Oct, 2014 9:48 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por EmiliF »

Un saludo Joan, he leido muchas cosas en este foro escritas por ti, una lástima que hayas dejado el mundillo de las quinielas.
Avatar de Usuario
Magnifico
11
11
Mensajes: 842
Registrado: Vie 12 Ago, 2005 12:37 am
Ubicación: Estados Unidos
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por Magnifico »

Me alegra que te encuentres bien Joan, parece que tenemos aficiones comunes.

Emilif,

Joan desarrollo los mejores programas de reducidas y la EM en la quiniela, aparte de otras utilidades, sus aportaciones son invaluables.


Saludos
El pensamiento ordena el caos..
http://1x2quinielas.blogspot.com
chestpoint
11
11
Mensajes: 827
Registrado: Sab 29 Ago, 2009 2:33 am

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por chestpoint »

Joan ya no pierde el tiempo como nosotros ....
Saludos Maestro ¡¡¡
Avatar de Usuario
MDII
10
10
Mensajes: 154
Registrado: Vie 19 Feb, 2010 7:40 pm
Contactar:

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por MDII »

Vaya, qué alegría, me paso por aquí casi de casualidad porque a mí estos temas de algoritmos se me escapan por mucho y veo el post de JoanD. Por supuesto que se te echa de menos. Espero que estés bien y que disfrutes esta nueva afición.

Ya se ha dicho arriba pero para el que no lo sepa, decir que todos los que hacemos nuestras quinielas con un enfoque de EM y no seríamos capaces de confeccionar aplicaciones informáticas, ni por conocimientos matemáticos ni de programación, no podríamos hacerlas de no ser por la prolífica actividad de Joan y su generosidad al compartir sus creaciones. Y además ha dejado poso con todo lo que nos ha enseñado con sus comentarios desde los inicios del foro.
Imagen
DESDE LA ENTRADA EN VIGOR DEL IMPUESTO DEL 20% JUAGAMOS MUY ESPORÁDICAMENTE, SOLO GRANDES BOTES
muttley
11
11
Mensajes: 325
Registrado: Mié 12 Feb, 2014 11:58 pm

Re: Respuestas

Mensaje por muttley »

Doctorpi escribió:1.Para saber que byte es el que corresponde a la quiniela 1.384.538 solo hemos de dividir el numero por 8.
Asi el byte 173.067 es el que contiene nuestro bit.
Para saber que bit es, hay que obtener el modulo (o resto) de 1.384.538 entre 8, o sea el bit 2.
2.Si queremos alterar un bit sin cambiar los otros 7, depende de lo que queramos hacer.
Si queremos ponerlo a 0, hay que hacer un AND logico poniendo a 1 todos los bits menos el nuestro.
Ejemplo:
Nota. los bits se leen de der. a izq. y se numeran de 0 a 7
76543210
10111101 (supongamos que este es nuestro byte)
11111011 (mascara de bits para poner a 0 el bit 2)
----------- AND
10111001 Resultado
Un AND logico solo da 1 de resultado si los dos bits son 1.Si leeis un poco sobre como funciona el AND logico lo entendereis
p q AND
-------------
0 0 0
0 1 0
1 0 0
1 1 1

Si queremos ponerlo a 1 la operacion es el OR
76543210
00101010 (supongamos que este es nuestro byte)
00000100 (mascara de bits para poner a 0 el bit 2)
----------- OR
00101110
Un OR logico da 1 si alguno de los 2 bits es 1. Por lo tanto si nuestra mascara tiene todo 0's menos el bit que queremos poner a 1, solo nuestro bit cambiara de valor.

p q OR
-------------
0 0 0
0 1 1
1 0 1
1 1 1

3.Para saber si un bit esta a 0 o a 1. Deberemos hacer un AND de nuestro bit con una mascara a 1 de ese bit precisamente. Si da 0 era 0 si da diferente de 0 era 1.
01001001
00000100
----------- AND
00000000 Nuestro bit era 0

01001101
00000100
----------- AND
00000100 Nuestro bit era 1

Un saludo
Dr.Pi

Así, en esta forma mantener cada bit en una columna. ¿Hay alguna forma para calcular la distancia entre estas columnas, ya que no estoy usando strings somente numeros
Por ejemplo, la forma de calcular la distancia entre la columna y 3 ^14 -1 y 3 ^ 9
Avatar de Usuario
BlasaZero
10
10
Mensajes: 100
Registrado: Lun 31 May, 2021 7:55 pm

Re: Algoritmos para eliminar columnas por diferencias

Mensaje por BlasaZero »

.
.
.
.
.................y cual es la solución final..????
NO SE SI SE PUEDE.........!!!!!!
Responder