나는 scheme에 익숙하지 않고 Scheme의 matrix에 문제가있다. 하나의 크고 작은 정사각형 행렬 (조건을 가진 : 작은 길이가 큰 것의 제수이어야 함)을 취하고 작은 행렬로 큰 행렬에 연산을 수행하는 새로운 행렬을 만드는 함수를 생성해야합니다. 성공적으로 큰 매트릭스를 원하는 크기로 분할했습니다. 결과를 얻으려면 큰 매트릭스를 성공적으로 조작하고 있습니다.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))과 같은 출력을 포맷하고 싶습니다. 내가 어떻게 해? 미리 감사드립니다.
내가 제대로 문제를 설명 할 수 없다는 것을 깨달았습니다. 내가 원하는 것은 두 개의 서로 다른 정방 행렬을 하나의 큰 행과 하나의 작은 행렬로 취하는 함수입니다. 큰 행을 작은 행렬과 같은 크기로 분할하고, 큰 행렬이 있으면 크기가 m 인 새로운 행렬을 생성하기 위해 이들 행렬을 조작합니다 mxm이고 작은 것이 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