ふと Smalltalk で「回転演算ってどうやるんだろうなー?」と思ったんですが、軽く探してみて見つからなかったので、自前実装するとしたらこんな感じでしょうか?
配列(もちろん文字列も可)を右に k 回転させます。
| array k middle first last result |
array := #(0 1 2 3 4 5 6).
k := 3.
middle := array size - k + 1.
first := (array copyFrom: 1 to: middle - 1) reverse.
last := (array copyFrom: middle to: array size) reverse.
result := (first, last) reverse.
結果は以下のようになります。
#(4 5 6 0 1 2 3)
でもやっぱり、そのものズバリのものがあるような気がしますが…。