====== 6. úkol - Data sorting ====== Vaším úkolem je vytvořit soubor sort.py, v kterém bude naimplementován jeden z řadících algoritmů, který má STABLE vlastnost (stabilita). Cílem úkolu je prokázat obecnou znalost řazení. Ve vašem řešení budeme kontrolovat přítomnost a fuknčnost dvou funkcí: sortNumbers a sortData. Jejich detailní syntaxe a popis funkčnosti naleznete níže. Za každou operaci jsou dva body, za správnou kontrolu v sortData je 1 bod. Celkem je možné získat 5 bodů K implementaci použijte tuto šablonu: {{:courses:b6b36zal:zadani:sort.py|}} K vyhodnocení používáme python verze 3. ==== Řazení čísel (sortNumbers) ==== Vytvořte funcki sortNumbers, která na vstupu přijme dva parametry (pole a stringovou hodnotu). Stringová hodnota může být buď ASC nebo DESC a určuje, zdali bude vstupní pole seřazeno vzestupně ši sestupně. Pole, které funkce obdrží jako parametr může být jakékoliv pole libovolné délky, v kterém jsou pouze číselné hodnoty. === Příklad === sortNumbers([4,2,3], 'ASC') vrátí [2,3,4] sortNumbers([4,2,3], 'DESC') vrátí [4,3,2] ==== Řazení dat (sortData)==== Řadící algoritmus, který používá k seřazení komparativní přístup může být aplikován i na jiné datové typy než čísla. Představte si, že máte pole výrobců aut: manufactures=['Ford','BMW','Audi'] a chceme toto pole seřadit. Bohužel zatím nevíme na základě jakých kritérií toto pole seřadit, proto potřebujeme nejprve definovat řadící kritérium. Budeme tedy řadit podle reputace značky. Vzhledem k tomu, že vás objekty čekají až v dalším semestru, tak vytvoříme pole čísel, které bude odrážet reputaci: reputation=[2,5,6]. Nebo-li Ford má reputaci 2, BMW 5, Audi 6. Funkce sortData na vstupu přijímá tři parametry (váhy (reputation),data(manufactures), stringová hodnota(ASC, DESC)). Algoritmus provede seřazení dat podle jejich vah a v případě ASC vrátí vzestupně seřazené značky podle reputaci v případě DESC sestupně seřazené značky podle reputace. === Příklad === sortData([2,5,6], ['Ford','BMW','Audi'], 'ASC') vrátí ['Ford','BMW','Audi'] sortData([3,2,4],['Ford','BMW','Audi'], 'DESC') vrátí ['Audi','Ford','BMW'] === Nutné podmínky === Aby algoritmus správně pracoval potřebuje tedy dvě pole stéjné délky. Z tohoto důvodu je potřeba ověřit, zdali jsou vstupní parametry validní. V případě, že na vstupu algoritmu jsou pole rozdílné délky, pak funkce sortData vyhodí vyjímku: ValueError('Invalid input data') za správně vyhozenou vyjímku je 1bod. ==== Bodování ==== Za úlohu je možné získat 5 bodů. 2 body za funkci sortNumbers, 2 body za funkci sortData a 1 bod za správně implementovanou kontrolu vstupu - viz popis funkce sortData