计划家庭作业

时间:2012-09-27 21:36:41

标签: scheme racket

在我参加的课程中,我们最近不得不学习编程语言Scheme。我得到了所有的基础知识,这几乎就是我们所经历的一切。我只是在学习以Scheme组成的不同方式思考时遇到了麻烦。

我接到了一项任务,甚至不知道如何开始。我已经坐在这里几个小时试图弄清楚如何开始,但我有点难过。为了记录,我不是要求代码来解决这个问题,而是更多的想法让我走上正轨。

无论如何,这是作业的要点......

我们会得到一份代表选民投票的十个数字的清单。这些数字是-1,0或1.然后我们得到一份候选人名单清单,其中有一个名称,然后是与候选人投票相对应的十个数字。这些数字也是-1 0和1。

例如。

'(0 0 0 -1 -1 1 0 1 0 -1)
'(Adams 0 1 -1 0 1 1 0 -1 -1 0 0)

我们被要求实现一个名为best_candidates的函数,该函数将包含一个数字列表(Voter)和一个候选列表列表。然后我们必须将选民的投票与每位候选人的名单进行比较,并返回最常见投票的名单。

到目前为止,我已经想出了一些东西。我只是对如何检查值并保留选民姓名感到困惑?我想我仍然坚持认为C / Java并且这使得这非常困难。

有任何建议可以帮助我入门吗?

1 个答案:

答案 0 :(得分:1)

我认为这是一个标准搜索问题,您正在寻找最小差异的项目(即“最常见”)。

也就是说,如果项目列表 x_0 x_1 ,..., x_n ,我认为您要编写一个函数计算一组相应的不一致数 d_0 d_1 ,..., d_n

一旦你可以计算出这些 d_i 不一致的数字,找出哪一个(或多个!)最小:这些对应于最大协议。

如果你可以这样做,那么相应的 x_i 就是你要收集的列表项。

上述描述的任何内容都不依赖于编程语言。如果您对其他语言更熟悉,请先使用该语言进行编码!你应该获得足够的信心和对问题的理解,以使额外的工作变得有价值。至少,您将拥有另一个可用于测试您的Scheme实现的实现,以确保您获得协议