Table of Contents

HW04 - Práce s textem

Termín odevzdání 20.11.2023 23:59 CET
Bodový zisk 6b

Zadání

Cílem programu je provést statistickou analýzu textu a řazení slov podle různých kritérií. Hlavním statistickým nástrojem je histogram (nebo také hustota pravděpodobnosti). Vstupem je libovolně dlouhý text bez diakritiky. Text může obsahovat interpunkci (čárka, tečka, středník, pomlčka), kterou je třeba odstranit.

Odevzdání

Do systému BRUTE odevzdávejte soubor pojmenovaný text.py. V tomto souboru budou funkce histogram a serad.

Histogram

Funkce pro výpočet a vykreslení histogramu (pravděpodobnostní funkci). Pravděpodobnosti jednotlivých písmen jsou reprezentovány řadami znaků *.

Funkce má tři parametry:

Návratovou hodnotou funkce je seznam n-tic, kde první položkou n-tice je znak a druhou položkou je počet výskytů v textu.

Příklad 1

ret = histogram('Ahoj svete, kde to kvete', 0)
 
a: *
d: *
e: *****
h: *
j: *
k: **
o: **
s: *
t: ***
v: **
 
# ret obsahuje [('a', 1), ('d', 1), ('e', 5), ('h', 1), ('j', 1), ('k', 2), ('o', 2), ('s', 1), ('t', 3), ('v', 2)]

Příklad 2

ret = histogram('Ahoj svete, kde to kvete', 10)
 
a: **
d: **
e: **********
h: **
j: **
k: ****
o: ****
s: **
t: ******
v: ****
 
# ret obsahuje [('a', 1), ('d', 1), ('e', 5), ('h', 1), ('j', 1), ('k', 2), ('o', 2), ('s', 1), ('t', 3), ('v', 2)]

Příklad 3

ret = histogram('Aaaach, to je kraaasa', 4)
 
a: ****
c:
e:
h:
j:
o:
s:
t:

Řazení slov

Cílem funkce je seřadit slova vstupního textu podle zvoleného kritéria. Za slovo budeme pro účely tohoto domácího úkolu považovat shluk písmen o délce větší nebo rovnou třem.

Funkce pro řazení slov má tři parametry:

Metody řazení:

Pokud není možné rozhodnout pořadí slov na základě kritéria, doplňkovým kritériem je řazení podle abecedy. Návratovou hodnotou funkce je seřazený seznam.

Příklad 1

ret = serad('Aaaach, to je kraaasa', 0, True)
print(ret)
['kraaasa', 'Aaaach']

Příklad 2

ret = serad('Aaaach, to je kraaasa', 2, True)
print(ret)
['kraaasa', 'Aaaach']

Příklad 3

ret = serad('Aaaach, to je kraaasa', 2, False)
print(ret)
['Aaaach', 'kraaasa']