球拍 - 两个列表比较列表和值的问题
Racket - Two Lists Problem with comparing a list and a value
我正在尝试编写一个函数,该函数使用目的地列表、与目的地对应的价格列表以及预算。然后它会生成一个字符串列表,表示目的地及其价格,以 space 分隔,根据预算可以负担得起。
有人可以帮我找出代码中的错误吗?它不能正常工作:(
(define (vacations destinations prices budget)
(cond
[(empty? destinations) empty]
[(<= budget (first prices)) (cons (string-append (first destinations) " " (int->string (first prices)))
(vacations (rest destinations) (rest prices) budget))]
[else (vacations (rest destinations) (rest prices) budget)]))
(check-expect (vacations (list "Maldives") (list 1599) 250) empty)
(check-expect (vacations(list "Maldives") (list 1599) 1599)
(list "Maldives 1599"))
(check-expect (vacations(list "Alberta" "BC" "Manitoba") (list 500 459 300) 460)
(list "BC 459" "Manitoba 300"))
你的函数几乎是正确的。那么唯一的错误是条件的第二个分支中的比较运算符:
(<= budget (first prices))
表示如果预算小于或等于价格,则将该地点视为可能的假期。
简单地反转条件:
(>= budget (first prices))
:如果预算大于或等于价格,则认为该地点是可能的假期。
我正在尝试编写一个函数,该函数使用目的地列表、与目的地对应的价格列表以及预算。然后它会生成一个字符串列表,表示目的地及其价格,以 space 分隔,根据预算可以负担得起。 有人可以帮我找出代码中的错误吗?它不能正常工作:(
(define (vacations destinations prices budget)
(cond
[(empty? destinations) empty]
[(<= budget (first prices)) (cons (string-append (first destinations) " " (int->string (first prices)))
(vacations (rest destinations) (rest prices) budget))]
[else (vacations (rest destinations) (rest prices) budget)]))
(check-expect (vacations (list "Maldives") (list 1599) 250) empty)
(check-expect (vacations(list "Maldives") (list 1599) 1599)
(list "Maldives 1599"))
(check-expect (vacations(list "Alberta" "BC" "Manitoba") (list 500 459 300) 460)
(list "BC 459" "Manitoba 300"))
你的函数几乎是正确的。那么唯一的错误是条件的第二个分支中的比较运算符:
(<= budget (first prices))
表示如果预算小于或等于价格,则将该地点视为可能的假期。
简单地反转条件:
(>= budget (first prices))
:如果预算大于或等于价格,则认为该地点是可能的假期。