| gadyel a întrebat:

Stie cineva alt mod mai eficient de a salva diferite numere intr-un singur numar decat metoda clasica de a inmulti cu 10 si a adauga cu noul numar?
Exemplu:
avem numerele 4, 3, 5,7 si le putem salva sub forma uni singur numar astfe:
4*10+3=43*10+5=435*10+7=4357
sim am salvat sirul intr-un singur numar 4357.
Daca stie cineva vreo metoda mai eficienta il rog sa o puna aici
bine inteles ca si metoda de scoatere a sirului din numar.
Se cunoaste si lungimea sirului.

p.s. Nu este vreo tema pentru scoala fiindca am terminat scoala este pentru un proiect personal asa ca rog admini sa nu-mi mai sterga intrebarea pe baza ca aici nu se rezolva tema de casa nu este tema de casa!

Răspuns Câştigător
| KhludCiprian a răspuns:

Pentru numere mici pot sa iti zic ca NU este nici o alta metoda.

Daca ai o multime de numere, de exemplu o imagine si fiecare numar este o culoare, e mult mai eficient sa folosesti o encodare (o compresie) ce in principiu face urmatoarele:
- numara fiecare "componenta" adica valoare.
- valorile ce se intalnesc cel mai rar le grupezi mai intai, si valoarea de la stanga o pui la stanga arborelui cea mai mare la dreapta arborelui.

http://en.wikipedia.org/wiki/Huffman_coding

E relativ mult de explicat si nu stiu daca exact asta cauti. Dar de exemplu daca stii ca mai mult de 50% din valori sunt o valoare, de exemplu "0", este foarte eficient sa salvezi doar "un bit" pentru ea, salvand 7/8 din spatiul folosit.

Alta metoda e sa salvezi numarul si de cate ori se repeta. La fel, daca se repeta de multe ori, se poate salva spatiu:
Pentru numarul: 12222444442
salvezi ca: 11425412
Si se citeste cam asa:"o data: 1, de 4 ori: 2, de 5 ori: 4, o data: 2 ".

| gadyel explică (pentru KhludCiprian):

Multumesc de raspuns.
Sincer nu este pentru o imagine ci as vrea sa salver un sir de numere cunoscut ca lungime si ce contine numere mai mici de 100 sub forma unui singur numar de preferat mai mic decat 4294967295 iar siru nu cred ca va depasi vreodata lungimea de 100 de numere.

| KhludCiprian a răspuns (pentru gadyel):

Cu numarul 4294967295 poti tine maxim 32 valori de 0 si 1 happy
Daca stii ca multe numere se repeta iti recomand forma aceea encodata:
"Pentru numarul: 12222444442
salvezi ca: 11425412"
Ca "optimizare" poti ca sa faci primul numar sa plece de la zero, si sa aduci 1 la secventa, asa o sa ai in loc de la 1 la 9 repetitii, de la 1 la 10 repetitii.

Daca stii sa te joci cu bitii, iti pot explica Huffman. Dar personal nu cred ca merita munca daca nu folosesti o poza sau ceva de genul.

| gadyel explică (pentru KhludCiprian):

Din pacate fiecare numar este unicat sigur si nu se repeta
desi despre Huffman am sa ma mai documentez sigur o sa imi foloseasca

3 răspunsuri: