Ракетка - проблема двух списков при сравнении списка и значения - PullRequest
1 голос
/ 31 октября 2019

Я пытаюсь написать функцию, которая использует список пунктов назначения, список цен, соответствующих пунктам назначения, и бюджет. Затем он создает список строк, представляющих пункты назначения вместе с их ценами, разделенными пробелом, которые доступны в соответствии с бюджетом. Может ли кто-нибудь помочь мне найти ошибки в моем коде? Не работает должным образом: (

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

1 Ответ

1 голос
/ 31 октября 2019

Ваша функция почти правильная. Тогда только ошибка оператора сравнения во второй ветви условного выражения:

(<= budget (first prices)) означает, что если бюджет меньше или равен цене, то следует считать это место возможным отпуском.

Просто поменяйте местами условие:

(>= budget (first prices)): если бюджет больше или равен цене, тогда рассматривайте это место как возможный отпуск.

...