can it be?? la compression quasi-illimitée sans perte de données

Le
uglyvan
ceci est un programme yabasic;
essayez-le sur de petits fichiers ( genre 1Mo ) parce que sinon, vu que c'e=
st du travail d'amateur, il y a des problèmes d'allocation mémoir=
e ou que sais-je encore.

nul doute que tout programmeur de ce nom fera du projet CIL un bijou.


dim t(100000000)
dim u(100000000)
dim v(1500)

i=1

open 1,"d:pipdm.zip","rb"
open 2,"d:pipdm1.txt","wb"
open 3,"d:pipdm1_log.txt","w"

après chaque execution du programme, crunchez le fichier 2 ( dm1.txt )=
qui deviendra dm1.zip, alors qu'un deuxième dm2.txt remplace le premi=
er


while(!eof(1))
t(i)=peek(1)
i=i+1
rem print i
wend

close 1

20
print "pass 1"

j=1
k=1
o=0
m=1

if (t(1)-128>=0) then
f=1
else
f=0
endif

while (j<=i)
rem print j,t(j)
zz=256
while (zz>1)
zz=zz/2
if (t(j)-zz>=0) then
40
f=1
else
f=0
endif
if (f=1 and o=0) then
k=k+1
u(k)=1
o=1
else if (f=1 and o=1) then
u(k)=u(k)+1
if (m<u(k)) then
m=u(k)
endif
t(j)=t(j)-zz
elseif (f=0 and o=0) then
u(k)=u(k)+1
if (m<u(k)) then
m=u(k)
endif
60
elseif (f=0 and o=1) then
k=k+1
u(k)=1
o=0
endif
endif
wend
j=j+1
wend
print "almost finished"

print
print m

for l=1 to k
poke #2,u(l)
v(u(l))=v(u(l))+1

next l
80
close 2

print "finish"

for m=1 to 1500
if (v(m)>0) then
print m,v(m)
r=r+m*v(m)
print #3,m,v(m),m*v(m)
endif
next m

print #3,r
close 3

end
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
uglyvan
Le #26416110
la philosophie du projet CIL:
chaque fichier comporte une association de bits ( que j'appelle des mots
;
à chaque mot une taille, de 1 à say 58
un mot est une suite de bits de même signe
000011110011111
se traduit par
4425
il suffit d'indiquer le signe ( 0 ou 1 ) du premier mot.
voilà; c'est tout;
c'est le hasard qui m'a acheminé là;
d'après la théorie,
un fichier devrait être rempli de mots de tailles
1 pour 25% x 1 = 25%
2 pour 12.5% x 2 = 25%
3 pour 6.25 x 3 = 19%
4 pour 3.125 x 4 = 12.5%
5 pour 1.6 x 5 = 8%
6 pour 0.8 x 6 =5%
etc
uglyvan
Le #26416113
Le mardi 8 novembre 2016 10:53:13 UTC+1, uglyvan a écrit :
ceci est un programme yabasic;
essayez-le sur de petits fichiers ( genre 1Mo ) parce que sinon, vu que c 'est du travail d'amateur, il y a des problèmes d'allocation mémo ire ou que sais-je encore.
nul doute que tout programmeur de ce nom fera du projet CIL un bijou.
dim t(100000000)
dim u(100000000)
dim v(1500)
i=1
open 1,"d:pipdm.zip","rb"
open 2,"d:pipdm1.txt","wb"
open 3,"d:pipdm1_log.txt","w"
après chaque execution du programme, crunchez le fichier 2 ( dm1.txt ) qui deviendra dm1.zip, alors qu'un deuxième dm2.txt remplace le pre mier
while(!eof(1))
t(i)=peek(1)
i=i+1
rem print i
wend
close 1
20
print "pass 1..."
j=1
k=1
o=0
m=1
if (t(1)-128>=0) then
f=1
else
f=0
endif
while (j<=i)
rem print j,t(j)
zz%6
while (zz>1)
zz=zz/2
if (t(j)-zz>=0) then
40
f=1
else
f=0
endif
if (f=1 and o=0) then
k=k+1
u(k)=1
o=1
else if (f=1 and o=1) then
u(k)=u(k)+1
if (m<u(k)) then
m=u(k)
endif
t(j)=t(j)-zz
elseif (f=0 and o=0) then
u(k)=u(k)+1
if (m<u(k)) then
m=u(k)
endif
60
elseif (f=0 and o=1) then
k=k+1
u(k)=1
o=0
endif
endif
wend
j=j+1
wend
print "almost finished"
print
print m
for l=1 to k
poke #2,u(l)
v(u(l))=v(u(l))+1
next l
80
close 2
print "finish"
for m=1 to 1500
if (v(m)>0) then
print m,v(m)
r=r+m*v(m)
print #3,m,v(m),m*v(m)
endif
next m
print #3,r
close 3
end

ah oui... info ou intox , je n'ai pas envie de trouver le script pour dà ©compresser les fichiers cil hein??
A vous les pros ( par exemple vu que je n'y connais rien en bizzness je n'i magine même pas contacter genre Winzip incorporated ( GPL ? )
uglyvan
Le #26416190
ah oui... info ou intox , je n'ai pas envie de trouver le script pour d écompresser les fichiers cil hein??
A vous les pros ( par exemple vu que je n'y connais rien en bizzness je n 'imagine même pas contacter genre Winzip incorporated ( GPL ? )

ben en fait, si, je vais essayer de vendre mon programme ( groumf! )
Publicité
Poster une réponse
Anonyme