Algoritmizace prace s SD kartou

Jindrich Fucik fulda na seznam.cz
Pondělí Březen 30 13:42:01 CEST 2020


A=ha, po mne je chyba se dívat na A[] jako na pole, je to stream, 
přichází, odchází.
Hledáme pole B[10], které obsahuje prvky nejbližší větší než je prvek B1 
v uspořádaném stavu.

Pro ilustraci příklad, kdy hledám 3 prvky, větší než B1=5:
A[] obsahuje prvky v pořadí z leva doprava:
1 14 8 15 6 2 7 9 4 11

Na začátku si naplním B[3]=[-1,-1,-1] - to jako že prvek o kterém vím, 
že není v seznamu.
První iterace A[]=1; B[3]=[-1,-1,-1]; B1=5;
prvek 1<5, takže zahodím

Druhá iterace A[]=14; B[3]=[-1,-1,-1]; B1=5;
prvek 14>5, takže přidám; s prvkem -1 pracuji jako s neexistujícím a 
první pozice v poli je neexistující prvek, takže přidám na začátek, 
všechny ostatní prvky v poli posunu o jednu doprava, poslední logicky 
vypadne.

Třetí iterace A[]=8; B[3]=[14,-1,-1]; B1=5;
prvek 8>5, takže přidám. Prvek 8 je menší než první prvek (14), takže 
přidám dopředu. Všechny ostatní prvky posunu.

Čtvrtá iterace A[]=15; B[3]=[8,14,-1]; B1=5;
prvek 15>5, takže přidám. Prvek 15 je menší než posldní prvek (-1), 
takže přidám na konec. Všechny ostatní prvky bych posunul, ale jsem na 
konci, takže jen zahodím poslední.

Pátá iterace A[]=6; B[3]=[8,14,15]; B1=5;
prvek 6>5, takže přidám. Prvek 6 je menší než první prvek (8), takže 
přidám dopředu. Všechny ostatní prvky posunu.

Šestá iterace A[]=2; B[3]=[6,8,14]; B1=5;
prvek 2<5, takže zahodím

Sedmá iterace A[]=7; B[3]=[6,8,14]; B1=5;
prvek 7>5, takže přidám. Prvek 7 je menší než druhý prvek (8), takže 
přidám na druhé místo. Všechny ostatní prvky posunu.

Osmá iterace A[]=9; B[3]=[6,7,8]; B1=5;
prvek 9>5, takže bych přidal, ale je větší než poslední (8), takže zahodím.

Devátá iterace A[]=4; B[3]=[6,7,8]; B1=5;
prvek 4<5, takže zahodím.

Desátá iterace A[]=11; B[3]=[6,7,8]; B1=5;
prvek 11>5, takže bych přidal, ale je větší než poslední (8), takže zahodím.

Takže mám můj nový seznam B[3]=[6,7,8] a nikde jsem si nepotřeboval ani 
uložit obsah streamu A[] a a ani nic sortovat.

Chápeš?

Dne 30.3.2020 v 10:39 Pavel Kutina napsal(a):
> Tak jsem si myslel, že to, že se mi to v hlavě nerovná do nějakého 
> pochopitelného algoritmu, je jen pokročilou hodinou - a mně se to tam 
> nerovná ani teď, takže si fandím a bude to bude spíš demencí.
> 
> Když to rozepíšu:
> 
> Mám pole prvků na vstupu, dejme tomu A[], kde jsou hromady 
> neuspořádaných položek. Mám pole B[] výstupu, kde potřebuju mít těch 
> deset správně setříděných - s tím, že je to výřez setříděného pole 
> Äsort[] , tedy při obrazení třeba čtvrté "stránky" z toho celku Asort[] 
> bude platit, že pole B[] obsahuje položky Asort[30] - Asort39]".
> 
> Buď jsme se úplně nepochopili, nebo to v tom řešení prostě nevidím - jak 
> zjistím, který prvek je první (B[0]), tedy na pozici 30 toho setříděného 
> pole (Asort[29])? Kdyby to bylo od nuly, tak jo, ale když chci najít 
> třicátý, tak musím to pole stejně nějak přetřídit, abych zjistil, které 
> jsou na těch pozicích před ním a které tedy mám zahodit jako podlimitní?
> 
> Asi potřebuju flipchart, kafe, a programátora, kterej to umí :)
> 
> Pavel Kutina
> 
> 
> ----- Original Message ----- From: "Jindrich Fucik" <fulda na seznam.cz>
> To: <hw-list na list.hw.cz>
> Sent: Sunday, March 29, 2020 10:38 PM
> Subject: Re: Algoritmizace prace s SD kartou
> 
> 
>> Ty přímo vkládáš na správné místo.
>> Tedy:
>> Je aktuální menší něž poslední minulý? Ano = zahoď + konec
>> Je aktuální větší než poslední v seznamu? Ano - je poslední v seznamu 
>> větší než 9? ano = zahoď + konec, ne = dej na konec
>> Jinak najdi pozici kam patří, posuň co je za pokud při posunu přeteklo 
>> 10, ta zahoď poslední.
>>
>> Dne 29.3.2020 v 21:19 Pavel Kutina napsal(a):
>>> Jakože pro každou stránku projdu ceý adresář a zahodím, co se mi 
>>> nevejde do mezí, následně setřídím už jen těch deset zbylých? To zní 
>>> hodně pěkně, díky, to asi bylo to správné nakopnutí, díky, tohle 
>>> zkusím rozvinout.
>>>
>>> Pavel Kutina
>>>
>>>
>>>
>>> ----- Original Message ----- From: "Hynek Sladký" <econf na centrum.cz>
>>> To: <hw-list na list.hw.cz>
>>> Sent: Sunday, March 29, 2020 8:48 PM
>>> Subject: Re: Algoritmiyace prace s SD kartou
>>>
>>>
>>>> Napada me algoritmus, ktery si pamatuje jen 10 prvku pro zobrazeni a 
>>>> 1 jako posledni z minule stranky.
>>>> Prochazi se vzdy cely adresar a do seznamu se pridava (tj. i vklada) 
>>>> nazev, ktery je vetsi nez posledni z minule stranky a mensi nez 
>>>> jeden z docasnych polozek seznamu. Po projiti celeho adresare by tam 
>>>> mely byt pozadovane polozky.
>>>> Tento postup se pak muze opakovat, dokud se nedojde na konec seznamu.
>>>> Nevim, jestli se mi podarilo to popsat pochopitelne, vysvetlovani mi 
>>>> nikdy neslo ;-)
>>>>
>>>> Hynek Sladky
>>>>
>>>>
>>>> Dne 29.3.2020 v 13:35 Pavel Kutina napsal(a):
>>>>> Zdravim,
>>>>>
>>>>> mam ted trochu cas na hrani, tak pro jednu svoji hracku chci 
>>>>> dodelat nejaky rozumny filemanager. Hloupe je, ze je to sice na 
>>>>> pomerne silnem procesoru (STM32F407VGT6 - 128kB RAM, 1MB flash), 
>>>>> ale porad to neni jako na PC...
>>>>>
>>>>> Chtel bych udelat okno ve stylu poloviny Norton Commanderu, tedy 
>>>>> vylistovani adresaru a souboru v danem adresari, prochazet soubory 
>>>>> a dal s nimi neco delat. Hacek je, ze mne nenapada, jak vyresit 
>>>>> trideni souboru - chci je mit srovnane abecedne (nebo treba podle 
>>>>> data, velikosti atd.), ale zobrazuju jich v seznamu na displeji 
>>>>> deset, na karte jich teoreticky muzou byt stovky, takze zobrazeni 
>>>>> musim strankovat. Kdyz nactu seznam do nejakeho pole a to setridim, 
>>>>> nasledne zobrazim vysek tech aktualne zobrazovanych deseti, je to 
>>>>> vsechno OK - ovsem krome toho, ze sezeru vsechnu pamet, co mam, a 
>>>>> jeste bych si musel nekde vypujcit :)
>>>>>
>>>>> Nenapadne nekoho, jak zmensit pametovou narocnost? Popravde mne nic 
>>>>> rozumneho nenapada.
>>>>>
>>>>> Diky za kazdy rozumny tip.
>>>>>
>>>>> Pavel Kutina
>>>> _______________________________________________
>>>> HW-list mailing list - sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>
>>>
>>> _______________________________________________
>>> HW-list mailing list - sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list