Scheme 计算项目在方案的结构化列表中出现的次数

Scheme 计算项目在方案的结构化列表中出现的次数,scheme,structure,racket,Scheme,Structure,Racket,作为参考,我正在使用DrRacket在Scheme中编程 我试图计算一个名字(字符串)在选票列表中作为第一选择的次数,但似乎无法计算出来 在某种情况下 一票由一人投票的三名候选人的姓名组成。这被定义为结构:(定义结构投票(choice1 choice2 choice3)) top Voces for函数应该使用一个名称和一个投票列表,并生成给定名称作为投票列表中第一选择投票的次数 这是我的代码(注意定义不正确): 提前谢谢你 您对最高投票数的定义是错误的。下面是一个已更正解决方案的框架版本: (

作为参考,我正在使用
DrRacket
Scheme
中编程

我试图计算一个名字(字符串)在选票列表中作为第一选择的次数,但似乎无法计算出来

在某种情况下

一票由一人投票的三名候选人的姓名组成。这被定义为结构:(定义结构投票(choice1 choice2 choice3))

top Voces for函数应该使用一个名称和一个投票列表,并生成给定名称作为投票列表中第一选择投票的次数

这是我的代码(注意定义不正确):


提前谢谢你

您对最高投票数的定义是错误的。下面是一个已更正解决方案的框架版本:

(define (top-votes-for cand alov)
  (cond ((empty? alov) 0)
        ((string=? (vote-choice1 <???>) cand)
         (add1 <???>))
        (else (top-votes-for cand (rest alov)))))
(定义(cand alov的最高投票数)
(条件((空?alov)0)
((字符串=?(投票选择1)C)
(增补1)
(其他(cand的最高票数(其余为‘‘‘‘)’))

事实上,我已经给了你大部分的解决方案。如果你理解上面的代码,剩下的部分应该很容易理解。

我认为“cand”和“alov”适合这些???部分(按顺序),但似乎不是这样@克丽丝更努力地思考。提示:每个
都是一个完整的表达式,而不仅仅是一个变量。第一个有形状
()
,第二个有形状
(())
.Hmm。第一个肯定是
(vote-choice1(first-alov))cand)
我想,但我不太确定第二个。也许是类似于
(添加1张最高票数(其余为alov))
@Chris@ChrisJester@ChrisJester Youngre是第一个
。至于第二个,为什么要调用
add1
两次?考虑一下你要添加1的内容。提示:想想在
else
案例中发生了什么,然后想想在
string=?
案例中你做了什么不同。啊,好吧,所以应该是
(add1(cand的最高投票数(rest alov))
。好吧,至少我的支票是正确的。谢谢你的帮助@克里斯@ChrisJester@ChrisJester-Young
(define (top-votes-for cand alov)
  (cond ((empty? alov) 0)
        ((string=? (vote-choice1 <???>) cand)
         (add1 <???>))
        (else (top-votes-for cand (rest alov)))))