Algoritmizace prace s SD kartou

Pavel Kutina hw na prelude.cz
Pondělí Březen 30 22:22:47 CEST 2020


To je hezký, jak se nechápeme :)

Otevřu adresář v tom filemenegeru, mám v něm předvolené třídění podle 
něčeho. Na první stránce mi nabídne prvních deset souborů, setříděných od 
prvního po desátý. V dalším PgDn dalších deset, od jedenáctého po dvacátý 
atd.

Protože soubory jsou na médiu chaoticky a ne podle zvoleného řazení, tak je 
musí setřídit. A zobrazit prvních deset (nebo následujících deset na další 
stránce). Není tam žádná mez, odkud pokud má nějaké soubory zobrazit - ne, 
zobrazí jich deset.

Tady už ale tuším, jak by to mělo jít udělat - první stránku zobrazí 
vytříděním prvních deseti (viz algoritmus, který jsi popisoval). Z toho mi 
povstane jméno souboru, který je poslední s tím, že vím která jména souborů 
při dalším zatřídění zahazovat (ty, co jsou v kritériu pod ním). Použiju 
opět ten algoritmus, co jsi popsal, ale už s tím, že znám tu spodní mez. A 
tak dále, až do konce adresáře, budu-li toho schopen.

No, teď už to jenom přepsat do kódu :)

Díky, tohle by mělo bohatě stačit, mělo by to chodit.

Pavel Kutina

P.S.: Jo a to zpomalování při hromadě souborů možná nedělal Norton, ale 
M602, jeden z nich určitě (já používal NC, v práci většinou M602 nebo 
Volkova) - prostě zatuhnul, hrabal po disku, a nic se nedělo, pak poskočil o 
další kus výpisu adresáře a dělal, jako by se nic nedělo - až do dalšího 
přeskoku stránky.


----- Original Message ----- 
From: "Jindrich Fucik" <fulda na seznam.cz>
To: <hw-list na list.hw.cz>
Sent: Monday, March 30, 2020 9:47 PM
Subject: Re: Algoritmizace prace s SD kartou


> Nebo jsem já nepochopil něco z tvého programu?
> Proč potřebuješ počítat ty prvky? Pokud pro to, aby jsi vypsal číslo 
> stránky, tak to poznáš podle toho, kolik prvků jsi zahodil.
> Jinak co si pamatuji, ani ten norton to nezajímalo. Stiskneš PgDn a 
> dostaneš následující stránku, bez ohledu na to, kolikátý prvek z kolika. 
> Stiskneš klávesu "šipka dolů" na posledním řádku a dostaneš stránku 
> posunutou o jeden řádek.
> Pokud jsi v adresáři prvně, dostaneš první stránku. Stiskneš PgDn a máš 
> druhou stránku. Jednou šipka nahoru, druhá stránka mínus jeden prvek, PgUp 
> ukazuje na mínus první prvek, takže dostanu zase první stránku od začátku.
>
> Dne 30.3.2020 v 16:54 Pavel Kutina napsal(a):
>> Chápu - a, tady je to nepochopení. Když použiju tvůj příklad, já přece 
>> ale nehledám B > 5, já vůbec nevím, větší než kolik to má být, protože 
>> nevím, který prvek z A bude ten rozhodující "dělicí". Primárně mi jde o 
>> zobrazení seznamu souborů, takže vám, kolik jich je na jedná stránce, ale 
>> nevím, jakým písmenem bude ten seznam třeba už na druhé stránce začínat.
>>
>> Věta "Hledáme pole B[10], které obsahuje prvky nejbližší větší než je 
>> prvek B1 v uspořádaném stavu." je nesprávná, mělo by být "Hledáme pole 
>> B[10], které obsahuje prvky nejbližší větší než je pátý prvek A v 
>> uspořádaném stavu".
>>
>> A[] 1 14 8 15 6 2 7 9 4 11
>>
>> Tvojí metodou dostanu B 6, 7 8 (tři následující, větší než 5), ale já 
>> bych potřeboval setřídit A:
>>
>> A[] 1 2 4 6 7 8 9 11 14 15
>>
>> a z něj dostat tři prvky po pátém prvku, tedy 8, 9, 11.
>>
>> Jinak ten algoritmus chápu. Leda ho protočit N-krát (kde N je číslo 
>> stránky při stránkování) - při prvním bude B>0, při druhém bude B větší 
>> než největší-poslední B z prvního průchodu, při třetím než ze druhého 
>> průchodu atd. Jo, bude to trvat a při dvacáté stránce se to bude třidit 
>> dvacetkrát a z toho devatenáctkrát zbytečně, ale zase je to daň za nízké 
>> využití paměti. Mimochodem - tak nějak to vypadá jako to, o čem tu psal 
>> kolega Sladký, jen jsem to původně nepochopil :)
>>
>> Jestli jsem to teda nakonec pochopil správně, tak tohle je to správné 
>> řešení. Mimochodem, co si tak vybavuju, tak i ten původně zmiňovaný 
>> Norton Commander na slabších strojích s velkým počtem souborů v adresáři 
>> také znatelně zpomaloval, možná se k těm seznamům choval nějak podobně.
>>
>> Pavel Kutina
>>
>>
>>
>>
>>
>>
>>
>> ----- Original Message ----- From: "Jindrich Fucik" <fulda na seznam.cz>
>> To: <hw-list na list.hw.cz>
>> Sent: Monday, March 30, 2020 1:42 PM
>> Subject: Re: Algoritmizace prace s SD kartou
>>
>>
>>> 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
>>> _______________________________________________
>>> 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