"Какое число я имею в виду" игра в догадки в схеме - PullRequest
0 голосов
/ 04 ноября 2011

Вот моя проблема:

  • Мне нужно создать программу в Схеме, чтобы играть в игру "Какое число я думаю"
  • Параметры - это нижний предел иверхний предел
  • Каждый раз, когда делается предположение, оно сравнивается с ответом
    • , если предположение меньше, оно должно говорить - идти выше
    • , если оно больше,должно быть написано: «Ступай меньше
    • , если оно равно, распечатай« 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?

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Вы можете сделать что-то вроде бинарного поиска.

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;
    }
}
0 голосов
/ 04 ноября 2011

Возможно, я неверно истолковал ваше задание - если да, дайте мне знать.

Ваша функция на самом деле не знает, какой правильный ответ!Это может быть причиной того, что вы запутались в islow? и ishigh? ...

Поэтому я думаю, что первое, что нужно сделать вашей функции, - это найти правильный ответ, который будет междуlow и high.Вы можете сделать это с помощью функции (random k), которая выбирает случайное число от 0 до k-1.Первая проблема состоит в том, чтобы выяснить, как использовать это, чтобы получить число между low и high.

Если у вас есть answer, то islow? и ishigh? являются простыми, иЯ не думаю, что вам нужно создавать отдельные функции для них;просто используйте > и <.

Вам также нужно разрешить пользователю многократно вводить догадки, верно?Это может быть проще, если сейчас вы просто скажете, что собираетесь создать функцию get-guess, которая будет запрашивать ввод у пользователя, а затем выяснить это.

...