【问题标题】:Scheme Homework Assignment计划作业
【发布时间】:2012-09-27 21:36:41
【问题描述】:

在我最近学习的一门课程中,我们不得不学习编程语言 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 并且这让这变得非常困难。

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

【问题讨论】:

标签: scheme racket


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢您的回复。我已经用 Java 编写了这个问题,这对我来说相当简单。您找到具有最小分歧数字的列表的方式很有趣,而不是我尝试的方式。我遇到的最大问题是,一旦我确定哪些列表是我需要的,我将如何将该候选人的姓名放入新列表并返回?
  • 在你的 Java 解决方案中,我猜你有一个循环。你能描述一下你在那个循环中做了什么吗?我猜其中一件事是计算与选民共同的选票数量。我要做的第一件事是开发一个函数,该函数接受一个选民和一个候选人,并返回他们共同的选票数量(或者,正如 Danny 所说,不同的选票数量)。
猜你喜欢
  • 2010-09-19
  • 2013-12-14
  • 2022-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
相关资源
最近更新 更多