Как рассчитать появление строки в ракетке - PullRequest
0 голосов
/ 12 февраля 2020

Напишите функцию Racket red-vs-blue, которая использует набор случайных чисел и создает строку в соответствии со следующими правилами:

Примеры:

(red-vs-blue (cons "red" (cons "blue" (cons 5/7 (cons "blue" empty)))))
⇒ "blue"
• (red-vs-blue empty) ⇒ "tie"
• (red-vs-blue (cons 3 (cons 1 (cons 4 (cons 1 (cons 5 (cons 9 empty))))))) ⇒ "tie"
• (red-vs-blue (cons "red" (cons "green" empty))) ⇒ "red"

Как создать основная функция?

1 Ответ

0 голосов
/ 12 февраля 2020

Вам просто нужно вызвать функцию для каждого цвета, сохранить результаты и сравнить их с условным:

(define (red-vs-blue lst)
  (let ((reds  (calculate lst "red"))
        (blues (calculate lst "blue")))
    (cond ((> reds blues) "red")
          ((< reds blues) "blue")
          (else "tie"))))

Тот же ответ, но без использования let - это будет менее эффективно, чем вычисление необходимые значения только один раз:

(define (red-vs-blue lst)
  (cond ((> (calculate lst "red") (calculate lst "blue")) "red")
        ((< (calculate lst "red") (calculate lst "blue")) "blue")
        (else "tie")))
...