Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Orion en Enero 14, 2011, 07:33:00 PM

Título: Ayuda con matematicas
Publicado por: Orion en Enero 14, 2011, 07:33:00 PM
presiso ayuda porque quiero hacer esto del modo mas eficiente posible.

si no me equivoco, 1 byte puede almacenar 256 valores distintos, por ejemplo del 0 al 255

supongamos que queremos guardar en un archivo 100 numeros, cada uno con valores entre 0 y 255, en ese caso nesesitariamos como minimo 100 bytes.

pero ahora supongamos que los numeros siempre estaran en orden de menor a mayor. En teoria, vastaria con menos de 100 bytes, pero en la practica no sarbria como hacerlo con menos de 100 bytes.

?Cren que sea posible?
?Cuanto es el minimo de memoria?
Título: Re: Ayuda con matematicas
Publicado por: Hackware en Enero 14, 2011, 08:26:25 PM
Hasta donde yo s? GM gestiona esto por si mismo. Yo nunca le he prestado atenci?n a cosas como esas (no por indiferencia, sino por ignorancia :P).
Título: Re: Ayuda con matematicas
Publicado por: MatuX en Enero 15, 2011, 01:58:49 AM
en realidad no entiendo tu pregunta pero si quieres almacenar 100 n?meros no importa si esta ordenados o no igual te va a ocupar el mismo espacio
Título: Re: Ayuda con matematicas
Publicado por: Orion en Enero 15, 2011, 03:53:10 PM
Citarsi quieres almacenar 100 n?meros no importa si esta ordenados o no igual te va a ocupar el mismo espacio

en realidad no ocuparia el mismo espacio, segun mis cuentas ocuparia entre 30 y 25 veses menos si se los coloca en un orden predeterminado (de menor a mayor como ya mencione)

me puse a sacar algunas cuentas:

la cantidad de combinaciones que hay en 100 bytes es de 256^100 aprox 7*10^240
sin embargo la cantidad de combinaciones que nesesito son de 99263936, logaritmo base 2 de dicha cantidad es 26.5 lo que significa que con 27 bits puedo almacenar cada una de las distintas posibilidades, lo que es casi 30 veses mas eficiente que usar 100 bytes.

espero no haberme equivocado en las cuentas, ahora me resta hacer el sistema de codificacion y decodificacion
Título: Re: Ayuda con matematicas
Publicado por: MatuX en Enero 15, 2011, 05:45:12 PM
puede ser que no entienda tu pregunta, hasta donde yo se en un byte solo se puede almacenar1 valor que va del 0 al 255 es igual que las palabra en una letra puede ocupar hasta 3 byte por que es uno para el color, fuente, tama?o y lo que se hace es almacenar las veces que se repite para ocupar menos espacio como en los formatos gif
Título: Re: Ayuda con matematicas
Publicado por: Hackware en Enero 16, 2011, 01:36:30 AM
?C?mo piensas aplicar esto en GM?
Título: Re: Ayuda con matematicas
Publicado por: carlosanomaly en Febrero 04, 2011, 10:15:54 PM
pues, de lo poco que yo se de assembler, mmm yo creo que eso es si tu usas el sistema binario, pero segun que ahorras espacio usando el sistema hexagesimal ademas de que te permite guardar valores mas grandes, generalmente casi nadie sabe de esto porque ense?an los super lenguajes y no los lenguajes madre, y yo soy uno de estos, pero podrias investigar sobre assembler y estoy seguro que podras encontrar tus respuestas.
Título: Re: Ayuda con matematicas
Publicado por: trunks14 en Marzo 06, 2011, 09:51:16 PM
Si necesitas guardar 100 n?meros (que est?n en el rango 0-255) no importa si est?n en cualquier orden, a?n necesitas 100 bytes.

Si sabes que la secuencia de bytes tiene ciertas restricciones, como que siempre aparecer?n en orden creciente, como en 0, 1, 2, 45... entonces efectivamente el n?mero de combinaciones posibles se reduce a 256 permutaci?n de 100:

(http://latex.codecogs.com/gif.latex?%5Cbegin%7Balign*%7D&space;%7B%7D_%7B256%7D&space;P_%7B100%7D=%5Cfrac%7B256!%7D%7B(256-100)!%7D&space;%5Capprox&space;1.14818706&space;%5Ctimes&space;10%5E%7B231%7D&space;%5C%5C&space;%5C%5C&space;256%5E%7B100%7D&space;%5Capprox&space;6.66801443&space;%5Ctimes&space;10%5E%7B240%7D&space;%5Cend%7Balign*%7D)

En vez del numero mas grande 256^100. Sin embargo aun as? necesitas 100 bytes. Lo ?nico que ha pasado es que se ha reducido el numero de combinaciones v?lidas posibles.

Tambi?n parece ser que haz confundido la f?rmula del logaritmo base 2. Esta te sirve para obtener el numero m?nimo de bits que necesitas para almacenar un n?mero de magnitud N, que nada tiene que ver con el n?mero de combinaciones de una secuencia.