【Shuffle】 --------そ------------------------------ hc: hop count si: shift index -------------------------------------- (a)------------------------------------------------------------------- 123456789012345678901234567890123456789012345678901234567890123456789 (b)------------------------------------------------------------------- --si-->| |--------------hc------------->| 1 ---------------------------------------------------------------------- 元ストリング(a)の最初から一文字を取って、結果ストリング(b)の(shift index)+(hop count)の位置に置く。 元ストリング(a)の2番目の一文字を取って、結果ストリング(b)の(shift index)+(hop count)*2の位置に置く。 元ストリング(a)の3番目の一文字を取って、結果ストリング(b)の(shift index)+(hop count)*3の位置に置く。 ........... ........... ........... ---------------------------------------------------------------------- ...という具合に結果ストリング(b)に文字をコピーしていく。 ただし、(shift index)+(hop count)*n が 元ストリング(a)の長さを超える場合は、nを1に戻し、 (shift index)に1を加算する。もし、(shift index)が(hop count)と同じになったら、 (shift index)=(shift index)%(hop count)で、(shift index)を0から再開する。 ======================================================================