2013-02-21 79 views
0

正如問題所示,我試圖從用戶輸入中刪除列表中的元素。 列表的格式如此。 '((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)) 

問題是我無法弄清楚如何將列表附加在一起。我只設法獲得我已經從中刪除元素的列表。我沒有看到任何解決方案,因爲我不允許使用變量。

+0

從CSM的CS400工作,呃? – zanegray 2013-02-21 06:44:56

+0

是的......我已經連續工作了15個小時。 – snowe 2013-02-21 08:11:04

+0

我修正了您的代碼格式以符合方案約定。請確保我沒有改變任何意義。 – yarian 2013-02-26 22:16:52

回答

0

我很難跟隨您的代碼,但是加入列表返回使用list函數或list*。兩者之間的區別在於後者列出了所有參數,除了最後一個參數之外。

+0

事情是,我無法弄清楚如何獲得主列表的開始和結束。我終於搞定了,通過倒轉列表,拖拽它,然後扭轉它。追加,然後附加固定的子列表,然後在最後執行相同的操作。但是現在,我被卡住了,因爲那些處理程序沒有抓住並重復這個問題。但這是另一個問題:\ – snowe 2013-02-21 08:14:44

相關問題