使用向量,conds和结构

时间:2015-01-19 15:29:37

标签: vector struct racket

我创建了一个结构,它将显示酒店的楼层列表(例如楼层1,楼层2)以及每层楼空的房间数量。我创建了一个矢量,允许用户编辑房间是否为空#34;或者"完整"。我遇到的唯一问题是我无法解决如何创建代码,该代码显示每层可以进入我的结构的空间数。我猜猜使用cond会起作用,但我真的不知道如何写它。

这是我到目前为止所做的:

#lang racket
(define floor-one (make-vector 10))

(vector-set! floor-one 0 "empty")
(vector-set! floor-one 1 "full")
(vector-set! floor-one 2 "empty")
(vector-set! floor-one 3 "empty")
(vector-set! floor-one 4 "empty")
(vector-set! floor-one 5 "full")
(vector-set! floor-one 6 "full")
(vector-set! floor-one 7 "empty")
(vector-set! floor-one 8 "full")
(vector-set! floor-one 9 "full")

(define floor-two (make-vector 10))

(vector-set! floor-two 0 "empty")
(vector-set! floor-two 1 "full")
(vector-set! floor-two 2 "empty")
(vector-set! floor-two 3 "empty")
(vector-set! floor-two 4 "empty")
(vector-set! floor-two 5 "full")
(vector-set! floor-two 6 "full")
(vector-set! floor-two 7 "empty")
(vector-set! floor-two 8 "full")
(vector-set! floor-two 9 "full")

(struct hotel-rooms (floor rooms-empty)) 


(define empty-rooms1 (λ (any->vector x)
                   (cond
                     ())))

1 个答案:

答案 0 :(得分:1)

这项任务的完美功能:vector-count。试试这个:

(define empty-rooms
  (λ (vec)
    (vector-count (λ (floor) (string=? floor "empty"))
                  vec)))

甚至更简单:

(define (empty-rooms vec)
  (vector-count (curry string=? "empty") vec))

例如:

(empty-rooms floor-one)
=> 5