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