2015-11-20 6 views
0

Я не уверен, как заставить этот код работать, его так поздно, что я думаю, что мой мозг прекратил функционировать, кто-нибудь хочет дать мне руку?Racket - выбор случайного элемента из списка

код до сих пор:

(define maze-size 15) 
(define-struct Cell (x y)) 

; adjacents : Cell -> list-of-Cells 
; Produce a list of the four Cells above, below, left, and right of 'cell'. 

(define(adjacents cell x y) 
(list 
(make-Cell x (+ y 1)) 
(make-Cell x (- y 1)) 
(make-Cell (- x 1) y) 
(make-Cell (+ x 1) y))) 

Вот где я получаю в тупик, как это исправить? Примечание: код ниже не работает.

; random-adjacent : list-of-Cells -> Cell 
; Produce a random Cell adjacent to a random Cell from the non-empty list'cells'. 

(define (random-adjacent cells) 
(random (adjacents cell))) 

Это то, что он должен вести себя, как:

(check-expect (member? (random-adjacent (list (make-Cell 123 104))) 
        (list (make-Cell 123 105) 
         (make-Cell 123 103) 
         (make-Cell 122 104) 
         (make-Cell 124 104))) 
      #true) 
+0

Там нет необходимости поднять вопрос, который не работает на SO. – uselpa

ответ

1

Это проходит тесты:

(define-struct Cell (x y)) 

(define (adjacents cell) 
    (list 
    (make-Cell (Cell-x cell) (+ (Cell-y cell) 1)) 
    (make-Cell (Cell-x cell) (- (Cell-y cell) 1)) 
    (make-Cell (- (Cell-x cell) 1) (Cell-y cell)) 
    (make-Cell (+ (Cell-x cell) 1) (Cell-y cell)))) 

(define (random-adjacent cell) 
    (let ((neighbors (adjacents cell))) 
    (list-ref neighbors (random (length neighbors))))) 

(check-expect (member? (random-adjacent (make-Cell 123 104)) 
         (list (make-Cell 123 105) 
          (make-Cell 123 103) 
          (make-Cell 122 104) 
          (make-Cell 124 104))) 
       #true) 
+0

большое спасибо! – Theo

+0

Есть ли способ, по которому я могу отправить вам по электронной почте дополнительные вопросы? – Theo

+1

Это не понадобится. Я регулярно просматриваю этот сайт, и другие люди могут помочь вам так же хорошо или лучше, когда я не буду доступен. Если мы не договоримся о соответствующей почасовой ставке ;-) Просто шутите, конечно. – uselpa

Смежные вопросы