Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
33
Task/Word-frequency/Prolog/word-frequency.pro
Normal file
33
Task/Word-frequency/Prolog/word-frequency.pro
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
print_top_words(File, N):-
|
||||
read_file_to_string(File, String, [encoding(utf8)]),
|
||||
re_split("\\w+", String, Words),
|
||||
lower_case(Words, Lower),
|
||||
sort(1, @=<, Lower, Sorted),
|
||||
merge_words(Sorted, Counted),
|
||||
sort(2, @>, Counted, Top_words),
|
||||
writef("Top %w words:\nRank\tCount\tWord\n", [N]),
|
||||
print_top_words(Top_words, N, 1).
|
||||
|
||||
lower_case([_], []):-!.
|
||||
lower_case([_, Word|Words], [Lower - 1|Rest]):-
|
||||
string_lower(Word, Lower),
|
||||
lower_case(Words, Rest).
|
||||
|
||||
merge_words([], []):-!.
|
||||
merge_words([Word - C1, Word - C2|Words], Result):-
|
||||
!,
|
||||
C is C1 + C2,
|
||||
merge_words([Word - C|Words], Result).
|
||||
merge_words([W|Words], [W|Rest]):-
|
||||
merge_words(Words, Rest).
|
||||
|
||||
print_top_words([], _, _):-!.
|
||||
print_top_words(_, 0, _):-!.
|
||||
print_top_words([Word - Count|Rest], N, R):-
|
||||
writef("%w\t%w\t%w\n", [R, Count, Word]),
|
||||
N1 is N - 1,
|
||||
R1 is R + 1,
|
||||
print_top_words(Rest, N1, R1).
|
||||
|
||||
main:-
|
||||
print_top_words("135-0.txt", 10).
|
||||
Loading…
Add table
Add a link
Reference in a new issue