根据Racket中的用户选择从列表列表中删除元素

时间:2013-02-21 06:33:33

标签: list racket

正如问题所示,我正在尝试使用用户输入从列表列表中删除元素。 列表的格式如下。 '((X X X) (X X X X) (X X))其中每个子列表包含任意数量的X.

用户为每个子列表选择1,2,3,....因此,如果用户键入1,则会选择子列表'(X X X)。然后,用户选择要删除的元素数量。

我现有的代码如下:

(define (humanTurn rows player playerNumber)
    (drawBoard (with-handlers ([exn:fail?
                                  (lambda (exn)
                                      (display 
                                           "ILLEGAL MOVE, PLEASE ENTER A VALID NUMBER\n"))])
                              (getRowAndSticks rows))
               (list (first (rest player)) (first player)) 
               (cond [(equals? playerNumber 1) 2]
                     [(equals? playerNumber 2) 1]
                     [else "error"])))

(define (getRowAndSticks rows)
    (list-tail (list-ref rows (sub1 (getRow)))
               (begin
                   (display "How many sticks:........ ")
                   (read))))

(define (getRow)
    (display "Which row do you choose: ")
    (read))

问题是我无法弄清楚如何将列表重新附加在一起。我只是设法得到我从中删除元素的列表。我没有看到任何解决方案,因为我不允许使用变量。

1 个答案:

答案 0 :(得分:0)

我很难跟踪您的代码,但是要重新加入列表,请使用list函数或list*。两者之间的区别在于后者制作了所有参数的列表,除了最后一个参数之外。