使用 Prolog 语言,我需要找出一个数字中子序列的出现次数。
我试图计算一个大文本文件中某个单词的出现次数,但也没有成功。虽然我有它的代码。
word_freq(W, Freq) :-
word_count(W, 0, Total, 0, Match),
Total > 0 -> Freq is Match / Total.
word_count(W, TotSoFar, Tot, MatchSoFar, Match) :-
( read_word(SoFar,W),
N \= end_of_file
-> T1 is TotSoFar + 1,
( N == W
-> M1 is MatchSoFar+1
; M1 is MatchSoFar
),
word_count(W, T1, Tot, M1, Match)
; TotSoFar = Tot,
MatchSoFar = Match
).
read_word(SoFar, W) :-
get_code(C),
( C == -1
-> ( SoFar == [] -> W = end_of_file ; reverse(SoFar, W) )
; code_type(C, alnum)
-> read_word([C|SoFar], W)
; reverse(SoFar, W)
).
我想出现/频率计数应该对两者或类似的工作相同。我不知道从哪里开始或如何继续,感谢任何帮助。