2017-01-10 8 views
1

に行列に新しい列を追加します。私が持っている行列はこれです: (define matr '('("Шаран" "Не" "Не" "Не" "Не" "Да" "Не" "Не" "Не" "Да") '("Гълъб" "Не" "Не" "Не" "Да" "Не" "Да" "Не" "Да" "Да") '("Котка" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не") '("Куче" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не")))スキーム

私は行列の終わりに1つのより多くの列を追加したいです。

私の現在のコードはこれです: (define (matrix-add-column matr new-row new-matr) (cond [(null? matr) new-matr] [(matrix-add-column (cdr matr) (cdr new-row) (cons new-matr (append (cadar matr) (car new-row))))]))

このコマンド(matrix-add-column matr '("Не" "Не" "Не" "Да") '())の出力は次のとおりです。

'((((() "Шаран" "Не" "Не" "Не" "Не" "Да" "Не" "Не" "Не" "Да" . "Не") "Гълъб" "Не" "Не" "Не" "Да" "Не" "Да" "Не" "Да" "Да" . "Не") "Котка" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не" . "Не") 
    "Куче" 
    "Да" 
    "Да" 
    "Да" 
    "Не" 
    "Не" 
    "Не" 
    "Не" 
    "Да" 
    "Не" 
    . 
    "Да") 

私はそれを好きではありません。私の新しいマトリックスは元のように見えるはずですが、もう1つのコラムがあります。列がコピーではなくオリジナルの行列になっていればさらに良いでしょう。

(car matr) 
''("Шаран" "Не" "Не" "Не" "Не" "Да" "Не" "Не" "Не" "Да") 
(cadar matr) 
'("Шаран" "Не" "Не" "Не" "Не" "Да" "Не" "Не" "Не" "Да") 

答えて

1

は、あなたが本当に引用しリストのことリストにあなたの行列を望んでいないことを、このようなものを想定しているため、私が使用して一点(cadar MATR)でそれがなぜあなたは尋ねる場合おそらく?

(define (matrix-add-column matrix column) 
    (map append matrix (map list column))) 

例:

> (define matr '(("Шаран" "Не" "Не" "Не" "Не" "Да" "Не" "Не" "Не" "Да") 
       ("Гълъб" "Не" "Не" "Не" "Да" "Не" "Да" "Не" "Да" "Да") 
       ("Котка" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не") 
       ("Куче" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не"))) 
> (matrix-add-column matr '("Не" "Не" "Не" "Да")) 
'(("Шаран" "Не" "Не" "Не" "Не" "Да" "Не" "Не" "Не" "Да" "Не") 
    ("Гълъб" "Не" "Не" "Не" "Да" "Не" "Да" "Не" "Да" "Да" "Не") 
    ("Котка" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не" "Не") 
    ("Куче" "Да" "Да" "Да" "Не" "Не" "Не" "Не" "Да" "Не" "Да")) 
+0

パーフェクトはあなたに感謝します – Nootor