Branimir_Maksimovic
Well-known member
- Joined
- Nov 22, 2018
- Messages
- 928
- Reaction score
- 370
Elem imamo tekst:
Free Bible Download
Uzeti text verziju.
Zadatak je prebrojati koliko puta se ponavlja koja rec nakon sto se text
pretvori u lowercase i ocisti od interpunkcije.
Prikazati reverzno sortirano po frekvenciji prvih 20 reci.
Mala zanimacija, interesantno je videti koliko moze biti efikasno
i elegantno u isto vreme. Svi jezici dozvoljeni pa i shell ;0)
Za pocetak evo elegantne ekstremno neefikasne implentacije
u Haskell-u:
i rezultat:
Jezici mogu da se razlikuju po tome sta spada u interpunkcijse znake ili ne
Free Bible Download
Uzeti text verziju.
Zadatak je prebrojati koliko puta se ponavlja koja rec nakon sto se text
pretvori u lowercase i ocisti od interpunkcije.
Prikazati reverzno sortirano po frekvenciji prvih 20 reci.
Mala zanimacija, interesantno je videti koliko moze biti efikasno
i elegantno u isto vreme. Svi jezici dozvoljeni pa i shell ;0)
Za pocetak evo elegantne ekstremno neefikasne implentacije
u Haskell-u:
Code:
~/.../d/bible >>> cat bbl.hs
import Data.List (sort,group)
import Control.Arrow ((&&&))
import Data.Char (toLower,isPunctuation)
import Text.Printf (printf)
main = do
contents <- readFile "bible.txt"
let result = reverse.sort $
map (length &&& head) $
group.sort.words $
map toLower $ filter (not.isPunctuation) contents
mapM_ (\(x,y) -> printf "%8d %s\n" x y) $ take 20 result
Code:
63924 the
51695 and
34734 of
13561 to
12913 that
12667 in
10420 he
9838 shall
8997 unto
8971 for
8854 i
8473 his
8177 a
7830 lord
7376 they
7013 be
6989 is
6659 him
6596 not
6429 them
Last edited: