1

在我正在学习的一门课程中,我们最近不得不学习编程语言 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 的函数,该函数将接收一个数字列表(选民)和一个候选人列表。然后我们必须将选民的选票与每个候选人的名单进行比较,并返回一个投票最多的名单。

到目前为止,我已经想出了一些事情。我只是对如何检查值并保留选民姓名感到困惑?我想我仍然停留在思考 C/Java 并且这让这变得非常困难。

有什么建议可以帮助我入门吗?

4

1 回答 1

1

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

也就是说,给定项目x_0x_1、 ...、x_n的列表,我认为您想编写一个函数来计算一组相应的分歧数字d_0d_1、 ...、d_n

一旦你可以计算出这些d_i分歧数,找出哪一个(或几个!)最小:这些对应于最大一致。

如果你能做到这一点,那么对应的x_i就是你想要收集的列表项。

上面的描述与编程语言无关。如果您更熟悉另一种语言,请先用该语言编写代码!您应该对问题获得足够的信心和理解,以使额外的工作变得有价值。至少,您将拥有另一个实现,您可以使用它来测试您的 Scheme 实现,以确保您获得同意

于 2012-09-27T23:55:37.237 回答