2015年12月20日日曜日

151220(2)

連続する整数をkずらすこと

Josephus problem のコードを書いていたとき、
連続する整数をkずらすことが少し気になった。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

aを1ずらすと
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0]
これは
(i + 1) % 12
という操作である。
aを2ずらすと
a = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 1]
これは
(i + 2) % 12
という操作である。
一般に、aをkずらすというのは
(i + k) % 12
という操作である。

b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
bを1ずらすと
b = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1]
これは
i % 12 + 1
という操作である。
bを2ずらすと
b = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2]
これは
(i + 1) % 12 + 1
という操作である。
一般に、bをkずらすというのは
(i + k - 1) % 12 + 1
という操作である。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。