Forums de Grospixels
Bienvenue sur le forum de Grospixels : [ S'Enregistrer ]
Déjà inscrit ? [ Connexion ]
 
retour sur le site
rechercher
Index du Forum » » Hors-sujet » » Je cherche une formule de math.
17 messages • page
1
Auteur Je cherche une formule de math.
Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-07-27 17:34
Je voudrais pouvoir calculer le nombre minimal d'octets à enlever X sur un nombre d'octets N. Car une fois X octets enlevé, j'ajoute toujours à ce qui reste de N un nombre de bits égal à son nombre d'octets qui reste. Donc par rapport à ce que je rajoute, je voudrais savoir le minimum que je dois enlever au départ pour ne pas en rajouter plus que ce que j'en ait enlevé.

Par exemple:
N: 1024 octets
X: j'enlève 24 octets
R: Reste 1000 octets et j'ajoute 1000 bits donc 1000/8
J: j'ajoute 1000/8 octets donc 125 octets.

Ce n'est pas bon car j'en ait enlevé 24 et j'en ait rajouté 125.

Mais si j'en enlève 128 c'est correct car il reste 896, 896/8 = 112 donc là je suis gagnant.

je cherches une formule pour calculer le minimum pour ne pas avoir à "tatonner" à la main.

Odysseus
Pixel planétaire

Score au grosquiz
0004305 pts.

Joue à lâcher trois poissons-ballons sur la ligne de départ.

Inscrit : Sep 15, 2002
Messages : 10891
De : ?????

Hors ligne
Posté le: 2005-07-27 17:52
Parfois, l'adolescence, ça sert aussi à ça:




_________________

"Il n'est pas de lutte plus violente et déterminée que celle d'un homme face à son envie d'aller aux toilettes" - Karate Boy


Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-07-27 18:17
C'est bon j'ai trouvé la formule moi-même.

((N - x) + ((N - x) / = N - 2

si N = 1024 ..

(1024 - x) + ((1024 - x) / = 1022

Mais je dois encore isoler le x, mais mes notions de math sont loin. Quelqu'un peut-il m'aider ?

cRon!y
Pixel de bonne taille



Inscrit : Oct 31, 2002
Messages : 311
De : mon boulot, j'ai rien à faire.

Hors ligne
Posté le: 2005-07-27 18:32
Citation :

Le 2005-07-27 18:17, Mew a écrit:
C'est bon j'ai trouvé la formule moi-même.

((N - x) + ((N - x) / = N - 2

si N = 1024 ..

(1024 - x) + ((1024 - x) / = 1022

Mais je dois encore isoler le x, mais mes notions de math sont loin. Quelqu'un peut-il m'aider ?

Déjà, tu peux la résumer:
((N - x) + ((N - x) / 8 ) = N - 2
>>>> -x +(N-x)/8 =-2
Non?


_________________

Le jeu vidéo serait-il en passe de devenir un art majeur?


celastus
Pixel de bonne taille



Joue à Tunic

Inscrit : Feb 06, 2003
Messages : 423
De : Paname

Hors ligne
Posté le: 2005-07-27 19:10
N octets
on enleve X octets
résultat N-X
on ajoute ensuite N-X bits, soit (N-X)/8
résultat N-X + (N-X) / 8
----------------------------------------
contrainte désirée : N-X + (N-X) / 8 < N

(N-X) * 9/8 < N
N * 1/8 - X * 9/8 < 0
X * 9/8 > N * 1/8
X > N / 9

EXEMPLE

N = 4096
X > 455 + 1/9

prenons X = 456

N-X = 3640

N-X + 3640 bits = 3640 + 455 = 4095

==> X = N/9 arrondi à l'entier supérieur si X doit être entier

Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-07-27 19:34
hmmm, je vois mal comment ça calcule le minimum

Avec ma formule je comprends mais comme tu l'a transformé je suis tout mêlé lol

EDIT: Ok je viens de comprendre, j'ai regardé ton exemple plus attentivement

Merci.

Donc en résumé je dois prendre mon N / 9 arrondi à l'entier va me donner mon minimum ?

[ Ce Message a été édité par: Mew le 2005-07-27 19:48 ]

EDIT2:

Hmm quelque chose cloche car si j'essaie avec N = 1048576

X > 1048576 / 9
X > 116508,444.....
alors si je prends 116509

1048576 - 116509 = 932067

932067 + (932067/8) = 116508,375
donc 116509 et

932067 + 116509 = 1048576

il est identique, il est pas plus petit, j'ai fait une erreur ??

celastus
Pixel de bonne taille



Joue à Tunic

Inscrit : Feb 06, 2003
Messages : 423
De : Paname

Hors ligne
Posté le: 2005-07-27 19:50
oui, N/9 arrondi à l'entier supérieur te donnera le minimum

Xavier
Pixel visible depuis la Lune


Inscrit : Jun 13, 2002
Messages : 7260
De : le sept sept

Hors ligne
Posté le: 2005-07-27 20:15
De mon temps, on n'utilisait pas de smiley en maths. Satanés réformes
_________________

@hyksem
http:\\bossdefin.wordpress.com
http:\\scrollingarriere.wordpress.com


Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-07-27 20:22
Quelle serait l'algo le plus rapide pour pouvoir obtenir la chaine la plus grosse qui se répète le plus souvent dans une chaine de octets ?

j'avais pensé faire une boucle, mais une boucle de 0 a 255 ce n'est par lourd, mais quand on arrive avec 2 octets, 3 octets, j'ai des boucles de fou et ça ne fini plus lol

D'autant plus que si je veux savoir la chaine la plus gourmande en octet, je suis obligé de mettre ça dans un tableau, et ça fait des gros tableaux 65536 éléments seulement pour 2 octets, alors j'imagine pas pour 4 ou 16 octets lol

pcq si admettons j'ai A qui se répete 100 fois, AB qui se répete 51 fois c'est plus gros et ABC qui se répete 35 fois c'est encore plus avantageux que les 2 autres.

Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-07-27 21:28
Encore une question..

Comment je dois faire si je veux savoir le nombre de bits d'un nombre x ?

Avec la logarithme je crois ?

Gamerphil
Gros pixel



Inscrit : Aug 25, 2002
Messages : 1926
De : Nord

Hors ligne
Posté le: 2005-07-27 22:37
Ouhh !! Tout ça c'est du chinois, j'ai jamais compris grand chose aux maths... Bon OK, je sors...

Al-Kashi
Tenace !!!
Score au grosquiz
 
1061720 pts.

Joue à Danganronpa 2 (PC)

Inscrit : Mar 12, 2004
Messages : 2136
De : Patrie de Nanarland

Hors ligne
Posté le: 2005-07-28 09:13
Citation :

Le 2005-07-27 21:28, Mew a écrit:
Encore une question..

Comment je dois faire si je veux savoir le nombre de bits d'un nombre x ?

Avec la logarithme je crois ?


Le nombre de bits d'un nombre x = trouver y tel que 2^y=x.
Or 2^y = e^(y*ln(2)) (avec ln = logarithme népérien)
2^y=x <=> e^(y*ln(2)) = x
ln(e^(y*ln(2))) = ln(x)
y*ln(2) = ln(x)
D'où : y = ln(x)/ln(2)

Exemple : sur combien de bits on code x=30 ?
y = ln(30) / ln(2) = 4,9[...] que l'on arrondit à 5. Vérification : 2^5 = 32

RainMakeR
Chef de Rubrique Nécrologique
Score au grosquiz
1035015 pts.

Joue à Pragmata, Tormented Souls 2, FH6

Inscrit : Apr 01, 2003
Messages : 34483
De : Toulouse

Hors ligne
Posté le: 2005-07-28 13:04
Citation :

Le 2005-07-27 20:22, Mew a écrit:
Quelle serait l'algo le plus rapide pour pouvoir obtenir la chaine la plus grosse qui se répète le plus souvent dans une chaine de octets ?


Toi t'essaie de faire un prog de compression

Par contre c'est la misère à realiser va falloir que tu mèle un peu de proba à ton algo parce que si tu passes chaques possibilité de mot tu va pas t'en sortir.

J'avais déjà réflechi à un algo mais c'est immonde à concevoir. Cherche sur le net à l'époque (avant son rachat) y'avais la dll de winzip gratos qu'on pouvait inclure dans son prog
_________________

Image


Wild_Cat
Anarchy in the UK


Score au grosquiz
0031906 pts.

Joue à Kiesel A2, MusicMan Sterling 5

Inscrit : May 01, 2002
Messages : 11282
De : Laval, de l'autre côté du pont

Hors ligne
Posté le: 2005-07-28 15:27
Ou si tu veux un algo vraiment bourrin et efficace, télécharge les sources de bzip2 ( http://www.bzip.org/ ). Si tu veux de la vitesse (et un algo plus simple à comprendre) plutôt que des perfs en compression, gzip ( http://www.gzip.org/ ) est tout indiqué.

L'open source, ça sert aussi à s'instruire
_________________

https://twitter.com/MaxNoelBass
https://www.youtube.com/c/TheTiberianSons


Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-07-29 19:46
Citation :

Le 2005-07-28 13:04, RainMakeR a écrit:
Citation :

Le 2005-07-27 20:22, Mew a écrit:
Quelle serait l'algo le plus rapide pour pouvoir obtenir la chaine la plus grosse qui se répète le plus souvent dans une chaine de octets ?


Toi t'essaie de faire un prog de compression

Par contre c'est la misère à realiser va falloir que tu mèle un peu de proba à ton algo parce que si tu passes chaques possibilité de mot tu va pas t'en sortir.

J'avais déjà réflechi à un algo mais c'est immonde à concevoir. Cherche sur le net à l'époque (avant son rachat) y'avais la dll de winzip gratos qu'on pouvait inclure dans son prog



Oui

Je crois avoir trouvé une méthode qui permet un compression meilleur que winzip, mais je vais créer mon prog et si ça marche je viendrai vous en faire part.

Wild_Cat
Anarchy in the UK


Score au grosquiz
0031906 pts.

Joue à Kiesel A2, MusicMan Sterling 5

Inscrit : May 01, 2002
Messages : 11282
De : Laval, de l'autre côté du pont

Hors ligne
Posté le: 2005-07-29 20:20
Mieux que WinZip (enfin, PKZIP version 2), ce n'est très pas dur -- beaucoup d'algorithmes le font. Compare plutôt à bzip2 ou à 7-zip.
_________________

https://twitter.com/MaxNoelBass
https://www.youtube.com/c/TheTiberianSons


Mew
Pixel de bonne taille



Inscrit : Oct 27, 2003
Messages : 307

Hors ligne
Posté le: 2005-08-01 01:37
En fait, plus que ceux-là, mon compresseur va pouvoir compresser 1 Gyg à 100k Le tout en quelques minutes.

Je sais, c'est incroyable, je vous donnerai le lien pour le télécharger quand j'aurai terminer le programme.


Index du Forum » » Hors-sujet » » Je cherche une formule de math.

17 messages • page
1




Forum www.grospixels.com (© 2011-2019 Grospixels)