Autorské riešenie Najpr vyriešime jednoduchšiu úlohu - nájsť tím, ktorý dosiahol najlepšie bodové skóre (tím, pre ktorý je rozdiel "dobrých" a "zlých" bodov najvyšší). Za tím s najvyšším skóre zvolíme prvý prvok zoznamu. Index tohto prvku je 1. urobTu "max 1 Avšak, prvý tím nemusí byť najlepším tímom. Preto postupne prejdeme cez všetky ostatné prvky zoznamu. Ak nájdeme v zozname tím, ktorý dosiahol lepšie skóre, daný tím prehlásime za najlepší. Do premennej "max potom vložíme index tohto tímu. prePrvky "tim :zoznam [ Ale ako nám pomôže hľadanie najúspešnejšieho tímu pri usporiadaní tímov podľa bodového skóre? Vytvoríme si nový zoznam, do ktorého uložíme nájdené maximum. Z pôvodného zoznamu ho odstránime. urobTu "pom vlozPosledny prvok :max :zoznam :pom Pokračujeme prehľadávaním pôvodného zoznamu, ktorý je kratší o jeden prvok. Takto pokračujeme, kým vstupný zoznam nie je prázdny. Výsledná procedúra by mohla vyzerať napríklad takto: viem usporiadaj :zoznam Vaše zaujímavé riešenia a najčastejšie chyby Zaujímavé riešenie predviedol Bali Michal. Jeho riešenie uvádzame nižšie. Ostatné tímy použili procedúru utrieď. Riešenie tímu Bali Michal: viem usporiadaj :vstup |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |