行列を回転させる方法は、行列の転置を取得してから、すべての行を逆にすることです。map (転置を返す) と reverse (90° 回転を完了する) の 2 つの関数を使用して、コンソールで次のことを行います。
(reverse (apply map list (list (list 1 2 3 4) (list 5 6 7 8) (list 9 10 11 12) (list 13 14 15 16)) ) )
Result: {{4 8 12 16} {3 7 11 15} {2 6 10 14} {1 5 9 13}}
それは正しいのですが、関数を作成したときに機能しません。
(define (transpose2 matriz)
(reverse (apply map list matriz))
次に、次のことを行います。
> (transpose2 (list (list 1 2 3 4) (list 5 6 7 8) (list 9 10 11 12) (list 13 14 15) ) )
エラーがスローされるだけです:
mcar: 契約違反が予想されます: mpair? 与えられた: ()
(srfi :41) をインポートしようとしましたが (r6rs にも取り組んでいます)、どちらも機能しません。ただし、この関数は 3 x 3 マトリックスで機能します。
どうすればこれを修正できますか?