私はschemeに新しく、Schemeの行列に問題があります。私は1つの大きな正方形行列と1つの小さな正方行列を取る関数を作成する必要があります(条件付き:小さい方の長さは大きなものの除数である必要があります)、小さな行列で大きな行列を操作して新しい行列を作成します。私は正常に大規模な行列を私が望む大きさに分割し、結果を得るために正常に操作しています。ここでScheme making matrix
は、私はそれをやった方法です:
(define (matrix-op big small x y)
(if (< y (/ (length big) (length small))))
(if (< x (/ (length big) (length small)))
(cons (calculate (split-y (split-x big small x) small y) small)
(matrix-op big small (+ x 1) y))
(matrix-op big small 0 (+ y 1)) ; <- this is where i need to split
)
'()
)
)
私の計算機能は、私はこのような機能を実行すると、それは私に(ヴァルヴァルヴァルヴァル)」のような出力を提供しますので、唯一の1原子値を返しますが、どのような私は '((val val)(val val))のような出力をフォーマットしたい。どうしたらいいですか?前もって感謝します。
問題を正しく説明できないことがわかりました。私がしたいのは、2つの異なる正方行列を1つの大きな行列と1つの小さな行列にする関数です。大きな行列を小さい行列と同じサイズに分割し、大きい行列の場合はm/nの新しい行列を作成します小さいものはnxnです。例:私は実際に計算した結果を返されたが、私は私のリターンの上にあった方法でのようなものだったんでした
for x=0 y=0 part is '( calculate result is 5
(8 0)
(7 1)
)
for x=1 y=0 part is '( calculate result is 2
(3 1)
(1 4)
)
:私は小さいと同じサイズの上に大きい分割などの結果を計算する必要が
big '( small '(
(8 0 3 1 5 3 2 2) (8 4)
(7 1 1 4 3 7 1 4) (9 5)
(1 3 7 4 3 6 6 3) )
(0 9 8 6 5 6 4 3)
(1 7 6 9 6 6 7 2)
(5 7 1 0 2 9 5 3)
(0 5 4 6 6 6 3 0)
(3 6 2 7 7 5 7 0)
)
'(5 2 4 2 2 6 4 4 4 3 5 4 2 4 6 3)
私はとして返したいと思った:
'(
(5 2 4 2)
(2 6 4 4)
(4 3 5 4)
(2 4 6 3)
)
それでは、どのように私は私が分割したい戻りリストを分割して管理することができますか?
サンプル入力と手順の予想出力を提供してください。 –
@ÓscarLópezサンプルの入力と出力を行いました。それが明確になることを願っています。 – BrokenFrog