Lisp &引用;我在想什么数字;阴谋中的猜谜游戏

Lisp &引用;我在想什么数字;阴谋中的猜谜游戏,lisp,scheme,racket,Lisp,Scheme,Racket,我的问题是: 我需要在Scheme中创建一个程序来玩“我在想什么数字”游戏 参数为下限和上限 每次进行猜测时,都会将其与答案进行比较 如果猜测较少,那么应该说越高 如果价格更高,它应该说——走低 如果相等,则打印“Winnner!” 这是我目前的代码: (define (game low high) (let ((guess (average low high))) (cond ((islow? guess) (game (+ guess 1) high))

我的问题是:

  • 我需要在Scheme中创建一个程序来玩“我在想什么数字”游戏
  • 参数为下限和上限
  • 每次进行猜测时,都会将其与答案进行比较
    • 如果猜测较少,那么应该说越高
    • 如果价格更高,它应该说——走低
    • 如果相等,则打印“Winnner!”
这是我目前的代码:

(define (game low high)
   (let ((guess (average low high)))
       (cond ((islow? guess) (game (+ guess 1) high))
             ((ishigh? guess) (game low (- guess 1)))
              (else '(Winner!)))))

我如何执行

我可能误解了您的作业-如果是,请告诉我

您的函数实际上不知道正确答案是什么!这可能就是为什么您对
islow?
ishigh?
感到困惑的原因

因此,我认为函数需要做的第一件事就是给出正确的答案,这将是一个介于
low
high
之间的数字。您可以使用
(random k)
函数来执行此操作,该函数选择0到
k-1之间的随机数。第一个问题是如何使用它来获取介于
之间的数字


一旦你有了
答案
,那么
islow?
ishigh?
就很简单了,我认为你不需要为它们单独设置函数;只需使用
即可执行类似于二进制搜索的操作

while (true){
    response = guess(number);
    if(response == true) return "Found it!";
    if(response == 'higher'){
        number = number+maximum/2;
    }
    else if(response == 'lower'){
        number = number+minimum/2;
    }
}

还有什么
islow?/ishigh?
需要知道的?请不要发布教科书上的问题。(顺便说一句,这个问题是其中的一部分。)我认为Eli的HtDP参考资料主要不是为了帮助您在线搜索解决方案:)。是的,它是为了解释为什么没有答案,并阻止人们为您回答。该程序确实需要输入,并且应该是以下类型:>(猜5)我在想什么数字?4更高。6更低。5是的,你赢了。那就去做吧^^我们不是来给你做作业的,相信我,我们一生中都经历过这样的事情。