Autorské riešenie Pri riešení úlohy použijeme údajový typ zoznam, v ktorom budú uložené hodnoty kariet jedného balíka. Pre určenie víťaza hry môžeme simulovať proces hry. Zoberieme prvú (vrchnú) kartu z prvého balíka a prvú (vrchnú) kartu z druhého balíka, porovnáme hodnoty týchto kariet a rozdiel pripíšeme na koniec balíka, v ktorom bola karta s vyššou hodnotou. Obe vrchné karty zahodíme, t. j. skrátime obidva zoznamy o ich prvé prvky. Tento postup budeme opakovať dovtedy, až kým nenastane situácia, že aspoň jeden z balíkov bude prázdny. Riešenie úlohy môže vysledovať nasledovne: viem zisti :a :b V tomto riešení sme mohli na otestovanie neprázdnosti zoznamu použiť namiesto podmienky počet :a<>0 podmienku prazdny? :a="nie. Iné riešenie úlohy je založené na nasledovnej úvahe. Po každom otočení a porovaní kariet klesne celkový súčet bodov v oboch balíkoch o rovnakú hodnotu. Pre výpočet víťaza stačí zistiť celkový súčet hodnôt kariet v balíkoch oboch hráčov. Vyhráva hráč, ktorého súče hodnôt kariet v balíku je väčší. Remíza nastáva ak sú obidva súčty rovnaké. Toto (viac matematické) riešenie úlohy môže vyzerať nasledovne: viem zisti :a :b Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešilo 20 tímov. Vaše riešenia boli veľmi rôznorodé. Našli sa 3 rekurzívne riešenia úlohy podobné prvému autorskému riešeniu. Dva tímy súťažiacich vyriešili druhým uvedeným spôsobom. Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach:
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |