ベクトルz = [1, 2, 3]
が与えられたら、私はすべての円順列がz
(すなわちzp = [[1,2,3], [3,1,2], [2,3,1]]
)のベクトルのベクトルを作成したいと思います。円順列
私は結果の順列を保存することができますどのように
for i in 1:length(z)
push!(z, shift!(z)) |> println
end
でzp
のすべての要素を印刷することができますか?それはzp
に同じベクトルにz
3回を保存するよう
zp = Vector(length(z))
for i in 1:length(z)
push!(z, shift!(z))
push!(zp, z)
end
が動作しないことに注意してください。
私は私が使用する、circshift' '知りませんでした代わりに。 – amrods
アプリケーションが循環シフトのために重複配列を使用できる場合は、次のようになります: 'allcircular(v)= begin v2 = repmat(v、2); L =長さ(v)。 [view(v2、i:i + L-1)for i = 1:L];終わりはトリックを行います。それは答えの2倍の速度で実行され、長いアレイではより少ないメモリしか使用できません。しかし、データが読み取り専用でない場合、重複する条件は非常にエラーを起こしやすい。 –
@DanGetz:nice!私は過去にストライドトリックを使用して問題に悩まされました。このようなアクセスは、コード内のクリティカルパスのボトルネックになることはほとんどありません。しかし、それはまだかなり滑らかです。 :-) – DSM