目前,我有一个函数item counts,用于计算字符串中元素的数量,并在发生一次或多次时将它们成对排序。
(check-expect
(item-counts
(cons "hello"
(cons "hey"
(cons "hello" '())))
equal?)
(cons "hello" 2
(cons "hey" 1) '()))
(check-expect
(item-counts
(cons #true
(cons #false
(cons #true '())))
equal?)
(cons #true 2
(cons #false 1 '())))
(define (item-counts lop ef)
(cond
[(empty? (rest lop))
(first lop)]
[(cons? (rest lop))
(if
(ef (first lop) (item-counts (rest lop) ef))) ... ???
如测试所示,如果此列表中的一个元素多次出现,我希望向现有列表中添加一个数字。我使用equal?函数来标识元素出现的次数,但是我迷失了如何将数字添加到现有列表以及在生成新列表时压缩重复元素。我尝试使用append函数,但它创建了一个不同的列表 (a)
我不知道这是否是自我学习,对于一个类等。我知道有标准的 HtDP 方法来做到这一点,食谱等。但是我不知道这些事情,对不起。我要说的是 Racket 相当容易原型化的东西。你可以只描述你的问题,不要考虑太多细节。我通常喜欢从中间开始。
例如:
然后你的任务是 1)如果没有更多的字符串要获取,我们就完成了,否则 2)获取下一个字符串,将其添加到表中,然后继续,因为我们还没有完成。
(define (build-assoc from-string current-assoc)
(if (done? from-string)
current-assoc
(let ((first-string (get-first-string from-string)))
(let ((result-table (add-string first-string current-assoc))
(result-string (drop-first-string from-string)))
(build-assoc result-string
result-table)))))
也许您最终没有使用此过程。但这是您正在做的事情的图片,它建议您需要什么样的帮助程序来完成任务。给自己一个战斗的机会,然后使用 DrRacket 概述您的问题。当您看到它时,也许它会为您提供一些如何回答问题的想法。DrRacket 很有帮助地指出了您所有未回答的问题,例如“done?:unbound identifier in:done
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(65条)