LISP:查找句子中每个单词的出现次数。

时间:2015-04-02 13:12:28

标签: lisp

有人可以向我解释我如何搜索句子中每个单词的出现次数,例如Common lisp中的“猫坐在垫子上”吗?

用户必须事先输入这一行文本,然后必须从中计算出现的事件。即使在哪里开始任何帮助都会有所帮助。

1 个答案:

答案 0 :(得分:1)

查看The Common Lisp Cookbook

中的split-by-one-space
(defun split-by-one-space (string)
    "Returns a list of substrings of string
     divided by ONE space each.
     Note: Two consecutive spaces will be seen as
     if there were an empty string between them."

    (loop for i = 0 then (1+ j)
          as j = (position #\Space string :start i)
          collect (subseq string i j)
          while j))

现在您可以使用带有equal的哈希表作为测试,并且可能在列表上使用mapc来获取密钥和频率哈希。然后你在哈希表中得到你想要的东西。

或者(和更慢)将使用(count (car lst) lst :test #'equal)计算第一个元素,并使用(remove (car lst) lst :test #'equal)处理列表的其余部分。当筛选后的列表为空时,您已完成。