Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:258:25af:c4...–

peter
JavaScript, AJAX, jQuery › algoritmus zapis pozic co ne…
25. 8. 2017   #217660

Na nic nove jsem zatim neprisel.

Mam bloky, treba 4 cisla. Cisla muzou nabyvat 0-3.
Zapisuji to tak, ze urcim pocty cisel a z poctu, kdyz soucet dosahne 4, presnanu zapisovat.
A poradi zapisuji s odmazavanim z pole cisel.
Oboje delam binarne.

Pr:
2001 (binarne 4x2 bitu)

0012 - 0:2x, 1:1x, 2:1x, 3:0x
binarne rle: 0001100 (x=0, xx=1, xxx=2...) - pocty opakovani cisel, soucasne serazeni podle velikosti

vyber ze serazeneho pole:
2001 - pozice [0] = 2, kde najde 2 v serazenem poli?
0012 - 2 je ctvrta, binarne 11
001 - [1] = 0, 0 je nulta, bin 00
01 - [2] = 0, 0 je nulta, bin 0 - jedna nula, protoze pocet prvku k zapisu klesl
11000
A posledni cislo neni treba zapisovat. Pripadne, pokud by se opakovalo vicekrat, tez neni treba zapisovat, kdyz vim, ze je to posledni z pole pocet a vim, ze pocet prvku je 4.

Cili, vysledek je 0001100 11000 = 12 bitu

Pr2:
2000 -> 0002
0001100  10 = 9 bitu

Pr3
0000 -> 0000
nic = 0 bitu, ale tady je treba si to pohlidat a zapsat aspon pocet opakovani, 0000 = 4 bity

Vim, nevypada to zajimave. Ale, u vetsiho poctu cisel, treba 256 se blizi pomer 1. A mne zajima sada cisel, kde je kazde prumerne 1x. Takze pocet cisel bude tak obvykle 1-4 pro kazde z 256.
Hm, ted mne napada, ze bych mozna mel zkusit 65.535, kdyz to tak klesa :)
U poctu cisel mam spocitane min-max 1/8 az 2/8 pro 256, pomer 0.12 az 0.25, obvykle 0.24.
U pozice cisel je to zas v podstate soucet n/2 * n + n/4 * (n-1) + n/8 * (n-1)... proste 256*8+128*7... Takze pro 65.535 je to
32768 * 16 + 16384 * 15 ... = 983040
65535 * 16 = 1048576
pomer 0,9375, to je dost na prd :) Kdyz prictu 0.24 (za pocty znaku) to presahne 1 naprosto moc.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý