私は以下を持っています:値リストを持つリスト。Common Lispリストから行列を作成する
(List (list 1 2) (list 3 4 5) (list 1))
注:それは2次元配列であるので、私はこのような構造を得るカント:(LIST (LIST (LIST 1)))
、つまり二次リスト内の文字\数字のみが存在することができます。
私がしたい:私のリストを作るであろう、関数を作成し、空のフィールドを埋めるためにはnilのを使用して同じ数の列を持っているので、私は、入力として上記のリストを持っている場合は、私の出力は次のようになります。
((1 2 nil nil)
(3 4 5 nil)
(1 nil nil nil))
申し訳ありませんが、それは簡単でなければなりませんが、私はLispと関数型プログラミングの初心者です。
注:私はCONSとAPPENDだけを使用する必要がありますが、これは私の主な問題です。CONSは各要素を別のリストに入れ、APPENDはすべてのnilを削除します。
UPD:それは以下の言われたように私が行っている、しかし、私はまだ1つの問題
(DEFUN FINDMLENGTH (INPUT)
(COND
((NULL INPUT) NIL)
(T (AND
(COND ((< MAXLENGTH (length (CAR INPUT))) (SETQ MAXLENGTH (length (CAR INPUT)))))
(FINDMLENGTH (CDR INPUT))))))
(DEFUN MAKESQUARE (INPUT RowNumb) (prog (a))
(COND
((NULL INPUT) NIL)
(T (AND
(SETQ SqMatr (APPEND SqMatr (LIST (append (car INPUT) (make-list (- RowNumb (length (CAR INPUT))))))))
(MAKESQUARE (CDR INPUT) RowNumb)))))
(SETQ SqMatr nil)
(SETQ MAXLENGTH 0)
を持っている問題は、私は現在、誰かが、私はそれらを作ることができますどのように明確にすることができ、データを渡すために、グローバル変数を使用していますということです自己によって変数を返しますか?
あなたの例で内部リストあたり4つの要素があるのはなぜですか?それは入力として与えられていますか? – coredump
どのような入力が可能なのかの例ですが、行数と列数は未定義です。 – rainbowShiningUnicorn