나는 Clojure에서 띄엄 띄엄 채워진 다차원 벡터를 만들려고 노력하고있다. 그러나 나는 지식의 한계에 다가 가고있다.클로저에 드문 드문 채워진 다차원 벡터?
컬렉션이 있습니다. x
저는 반복 작업 중이며 크기가 (count x)
인 (count x)
인 다차원 벡터를 만들고 싶습니다. 대부분의 셀은 비어 있지만 x 축과 y 축이 일치하는 지점 (예 : (1 1), (2 2), (3 3) 등)에서 함수를 실행하여 if 그 공간에 값을 넣어야합니다. 절차 언어에서
for (i = 0; i < length(x); i++) {
for (j = 0; j < length(x); j++) {
if (i == j && testReturnsTrue(x[i])) {
table[i][j] = (list x[i])
}
else {
table[i][j] =()
}
}
}
하지만이이 Clojure의에서 할 수 얼마나 주위에 내 머리를 정리하고 수 없습니다. 나는 내포와 중첩 된 루프 - 반복 구조를 위해 중첩을 사용하여 시도했지만 어느 쪽도 작동하지 못한다.
또는 올바른 크기의 변경 가능한 테이블을 만들고 빈 목록으로 모두 초기화 한 다음 x
의 각 요소를 확인하면서 값을 설정할 수 있지만 가능하면 테이블을 불변으로 유지하고 싶습니다.
FWIW "희소"라는 단어는 답장 된 모든 사람들을 혼란스럽게 만들었습니다. 당신의 벡터가 나중에 채워지고 단지 희박한 * now * 일 경우, 희박 지향 기술은별로 의미가 없습니다. 나는 당신이 질문을 변경하거나 명확하게 제안한다. – amalloy