我是学习者,刚开始学习这个......
任何人都可以帮我吗???
将一个clojure程序写成一个函数,最频繁的单词,它有两个参数。第一个参数是一个字符串,第二个参数是一个整数,称之为n。 most-frequent-word返回字符串中出现最多的长度为n的序列字。例如(最频繁的单词“TCGAAGCTAGACGCTAGTAGCTAGTGTGCA”4)返回(“CTAG”“GCTA”)
答案 0 :(得分:2)
尝试让您入门的一些提示:
partition
将字符串转换为"单词"的序列。请记住提供step
的{{1}}参数,以便获得所有可能的重叠子序列。frequencies
计算事物(包括序列)出现在集合中的次数。 max
或max-key
在其输入中搜索最高值。使用apply
将集合的内容作为单独的输入检测到它们。1
将输出字符序列,而不是字符串。您可以使用clojure.string/join
将它们转换回字符串。 如果你愿意,我可以更加明确,但对于初学者来说,在REPL中试验这些并尝试自己解决这些问题也很有价值。
对,这个特别的步骤有点模糊。由于您希望 all 具有最大频率的字符串,因此您需要执行的操作不仅仅是partition
。我这样做的方法是首先找到max-key
的频率值,然后过滤掉频率不同的任何键/频率对。
max
从性能的角度来看,这并不是很理想,但似乎比尝试在一次迭代中完成这两项工作更清晰地分离关注点(并且希望更容易理解)。