lisp - "What number am I thinking of"Scheme中的猜谜游戏

标签 lisp scheme racket

这是我的问题:

  • 我需要在 Scheme 中创建一个程序来玩“我在想什么数字”游戏
  • 参数为下限和上限
  • 每次进行猜测时,都会将其与答案进行比较
    • 如果猜得少,它应该说高一些
    • 如果更多,应该说 -go lower
    • 如果相等,打印出“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!)))))

如何实现 islowishigh

最佳答案

你可以做类似二分查找的事情。

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;
    }
}

关于lisp - "What number am I thinking of"Scheme中的猜谜游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001801/

相关文章:

lisp - 为什么 Setq 工作但不让?

scheme - Racket 开始形式

clojure - Scheme 和 Clojure 没有原子类型谓词——这是设计使然吗?

racket - 我如何在 Typed Racket 中使用 define/contract(或类似的东西)?

Racket - 如何在 bash 脚本中获取 “previous executed command”?

racket - Racket v5.1.1 中的范围界定错误?

c - 获取我用 C 编写的 Lisp 解释器的流控制警告

recursion - Racket :识别尾递归?

list - 在列表中,如何通过将列表作为参数的函数对列表进行修改?

scheme - Racket 是否支持内部 "define"?