0

Mapleでの質問です。Java に関しては、カウントとインクリメントが必要であることを理解していますが、私のロジックは単純に maple コードに変換されません。

14x14 配列に変換したい非常に長い LIST (196) のリストがありますが、convert(LIST,Array) を使用しても 1 次元配列しか得られません。

Maple コードでは、これが最初の列になります。

j:=1; 
for i from 1 to 14 do
B[i,j]:=Longlistvalue[i]; 
end do;

私の 2 番目の列が t=2 と s が 15 から 24 に由来することは明らかですが、これをループに入れるのに苦労しています。

確かに、これに使用できるループまたは最初の 14 を最初の行 (または列) に入れ、次の 14 を次の行/列などに入れる maple コマンドのいずれかがありますか?

私の最近の試みは私を取得します

B:=Array(1..14,1..14):
n:=1;
m:=14;
for j from 1 to 14 do
  for i from n to m do
     B[i,j]:=Longlistvalue[i];
  end do;
  n:=n+14;
  m:=m+14;
end do;

しかし、私の配列が範囲外であることを示しているわけではありません (B[i,j] の s は 15 未満でなければならないため)。

より効率的なループを使用してこれを回避する方法はありますか?

4

1 に答える 1

1

Array (または Matrix) コンストラクターを使用してこれを直接行うことができ、演算子を使用してエントリを割り当てます。

リスト エントリは、列ごとまたは行ごとに配列に配置できます。m=14 および n=14 のケースに合わせて例を調整します。

m,n := 3,4:

L:=[seq(i,i=1..m*n)]; # you got your list in another way

             L := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

Array(1..m,1..n,(i,j)->L[(j-1)*m+i]);

                          [1    4    7    10]
                          [                 ]
                          [2    5    8    11]
                          [                 ]
                          [3    6    9    12]

Array(1..m,1..n,(i,j)->L[(i-1)*n+j]);

                         [1     2     3     4]
                         [                   ]
                         [5     6     7     8]
                         [                   ]
                         [9    10    11    12]

ネストされたループを使用することもできます。

Longlistvalue:=[seq(i,i=1..14^2)]: # your values will differ, of course

B:=Array(1..14,1..14):
n:=14;
m:=14;
for j from 1 to m do
   for i from 1 to n do
      B[i,j]:=Longlistvalue[(j-1)*m+i];
   end do;
end do:

# so we can see the contents, displayed in full
interface(rtablesize=infinity):

B;
于 2012-11-21T18:14:45.893 に答える