CSHIFT |
書式 | CSHIFT(ARRAY,SHIFT[,DIM]) | ||||||
機能 |
次元数が1である配列上で要素の循環移動(Circular Shift)を行うか、
または次元数が2以上である配列式の指定された次元に沿った1次元の
部分配列のすべてにおいて要素の循環移動を行う。 部分配列の端から外にはみ出した要素は、反対側の端に送られる。 それぞれの部分配列は、異なる方向に異なる量だけ移動してもよい。 (1)ARRAYが1次元配列であるとき、結果のi番目の要素は、 ARRAY(1+MODULO(i+SHIFT-1,SIZE(ARRAY)))とする。 (2)ARRAYが2次元以上の配列であるとき、結果の部分配列 (s1,s2,…,sDIM-1,:,sDIM+1, …,sn)の値は、CSHIFT(ARRAY(s1,s2, …,sDIM-1,:,sDIM+1,…,sn),sh,1)とする。 ここでshは、SHIFTまたはSHIFT(s1,s2, …,sDIM-1,sDIM+1,…,sn) とする。 nはARRAYの次元数とする。 | ||||||
引数 |
| ||||||
戻り値 | 型、種別型パラメタおよび形状は引数ARRAYと同じである。 |
┌─┬─┬─┐ ┌─┬─┬─┐ v │1│2│3│ v │1│2│3├──┐ ├─┼─┼─┤ ├─┼─┼─┤ │ │4│5│6│ ┌────┤4│5│6│ │ └┬┴┬┴┬┘ │左へ1 └─┴─┴─┘ │ └┐│ │ ↓ 右へ1↓ ┌┼┼─┘ ┌─┬─┬─┐ ┌─┬─┬─┐ ││└─┐ │5│6│4│ │3│1│2│ │└┐ │ └─┴┬┴─┘ └─┴┬┴─┘ ↓ ↓ ↓ │ │ ┌─┬─┬─┐ │ ┌─┬─┬─┐ │ v1│3│1│2│ │v2│3│1│2│ │ ├─┼─┼─┤ │ ├─┼─┼─┤ │ │6│4│5│ └─→│5│6│4│←┘ └─┴─┴─┘ └─┴─┴─┘ INTEGER :: i INTEGER,DIMENSION(2,3) :: v,v1,v2 v(1,:)=(/1, 2, 3/) v(2,:)=(/4, 5, 6/) v1=CSHIFT(v,-1,2) !SHIFT=-1は右へ1 v2=CSHIFT(v,(/-1,1/),2) !-1は右へ1,1は左へ1 WRITE(*,'(3I2)') (v1(i,:),i=1,2) WRITE(*,'(3I2)') (v2(i,:),i=1,2)
実行例 |