如何计算球拍中的弦出现次数

How to calculate string occurence in racket

编写一个 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"

如何创建主函数?

您只需为每种颜色调用该函数,存储结果并将它们与条件进行比较:

(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")))