불변의 인덱스 된 다차원 배열로 작업하고 싶습니다. 의미가있는 구조는 Vector
이 Vector
입니다.Scala에서 다차원 벡터를 만드는 방법은 무엇입니까?
scala> val v = Vector[Vector[Int]](Vector[Int](1,2,3), Vector[Int](4,5,6), Vector[Int](7,8,9))
v: scala.collection.immutable.Vector[Vector[Int]] = Vector(Vector(1, 2, 3), Vector(4, 5, 6), Vector(7, 8, 9))
당신이 Array.ofDim
때와 수처럼, 크기를 지정하여 빈 배열을 만들 좋을 것이다.
scala> a = Array.ofDim[Int](3,3)
a: Array[Array[Int]] = Array(Array(0, 0, 0), Array(0, 0, 0), Array(0, 0, 0))
그러나, Vector.ofDim
기능은 없으며 동일한 기능을 찾을 수 없습니다.
변경할 수없는 개체에 해당하는 Array.ofDim
이 있습니까? 그렇지 않다면 왜 안 되겠습니까?
스도쿠 퍼즐을 해결하는 프로그램입니다. 부분 해는'Option [Int]'의 nxn 배열로 표현된다. 부분적인 솔루션 _p_가 주어지면, 프로그램은 정수를 배열에 넣음으로써 또 다른 하나의 가설을 가정 할 수 있습니다. 각 _p_가 여러 개의 _p'_를 생성 할 수 있으므로 각 부분 솔루션을 변경하지 못하게하고 싶습니다. 내 옵션은 다음 중 하나 인 것으로 보입니다. 1) 개인 '배열'로 숫자를 표현하십시오. 2) 숫자로 '벡터'를 표시하십시오. (2)는 기능적 스타일에서 더 많이 보이지만, '벡터'를 만드는 것은 어색하다. –
단일 차원을 사용하여 다차원 배열/목록을 나타낼 수 있습니다. – pedrofurla
다차원 벡터에서 셀을 업데이트하는 데 약간의 준비를하십시오. 아마도 가장 쉬운 방법은 유틸리티 메소드를 가지는 것입니다 : def update [T] (v : Vector [Vector]) (c1 : Int, c2 : Int) (newVal : T) = v.updated (c1, v (c1) .updated (c2, newVal))'. 또는 http://stackoverflow.com/a/12612908/770361에서 더 높은 차원의 복사하여 붙여 넣기가 필요한 경우 –