Algoritmizace prace s SD kartou

Jindrich Fucik fulda na seznam.cz
Pondělí Březen 30 21:47:31 CEST 2020


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


Další informace o konferenci Hw-list