2012-03-21 4 views
1

숫자를 목록에 포함하여 대각선으로 배치 한 무한 행렬을 어떻게 만들 수 있습니까?목록 이해가있는 대각선 행렬을 작성하는 방법

[[ 1, 2, 4, 7, 11, ...], 
[ 3, 5, 8, 12, 17, ...], 
[ 6, 9, 13, 18, 24, ...], 
[10, 14, 19, 25, 32, ...], 
...] 

나는 이런 식으로 할 시도했다 :

firstColumn = take 6 $ map fst $ iterate (\(a,b) -> (a+b,b+1)) (1,2) 
matr :: [[Int]] 
matr = [take 6 $ map fst $ iterate (\(x,y) -> (x+y, y+1)) (a, i) | a <- firstColumn, let i = 1] 

그러나 나는 통과 할 수있는 방법 (I + 1)은 다음 즉 모든 행은 (어떻게 추가 행을 반복 할 수있는)

x 및 y 인덱스에 대한 공식을 찾아
+0

당신은 무엇을 시도? 어떻게 수학적 측면을 수행 할 수 있는지 알고 있습니까? 아니면 도움이 필요합니까? 이 숙제가 있니? – dave4420

+0

그리고 왜 목록 이해력을 사용해야합니까? – dave4420

+0

그것은 숙제의 일부입니다. 나는이 이해력을 몇 가지 시도해 봤습니다. 그래서 지금 어떻게하면 이해력으로 할 수 있을까요?) 나는 다른 것들을 사용하는 것이 훨씬 쉬울 것이라고 생각합니다.) – overwriter

답변

2

, FE :

[[ 1 + (x + y) * (x + y + 1) `div` 2 + y | x <- [0..]] | y <- [0..]] 
관련 문제