🌀

Juliaで配列を循環させる

2023/01/09に公開約700字2件のコメント

1→2→3→4という順番を2→3→4→1のように変えたいときpush!(配列, 加える要素)最初の要素 = popfirst!(配列)を組み合わせるとうまく配列を循環させられます.

julia> A = [1,2,3,4]
4-element Vector{Int64}:
 1
 2
 3
 4

julia> push!(A, popfirst!(A))
4-element Vector{Int64}:
 2
 3
 4
 1

julia> push!(A, popfirst!(A))
4-element Vector{Int64}:
 3
 4
 1
 2

julia> push!(A, popfirst!(A))
4-element Vector{Int64}:
 4
 1
 2
 3

このときpopfirst!(A)は破壊的に配列Aから最初の要素を削除し, 最初の要素を返す関数です.

julia> A = [1,2,3,4]
julia> popfirst!(A)
1
julia> A
3-element Vector{Int64}:
 2
 3
 4

一方, push!(A,x)は最後にxを要素として追加する関数です.

julia> A = [1,2,3,4]
julia> push!(A, 5)
5-element Vector{Int64}:
 1
 2
 3
 4
 5

これらを応用し, 最初の要素を削除すると同時に最後に追加するのがpush!(A, popfirst!(A))です.

Discussion

Julia 初心者なので,間違っていたらすみません.おそらく,circshift を使うのが一番シンプルではやいと思います.以下のURLのベストアンサーをご確認いただければと思います.

https://stackoverflow.com/questions/53787042/roll-array-uniform-circular-shift

ありがとうございます!
これが見つけられなかったので作ってしまいました。本文の方でもこちらの関数を紹介させて頂きます🙇🏻‍♂️

ログインするとコメントできます