具有立方体数据的数组的边缘索引

时间:2017-12-11 22:22:58

标签: arrays math set

如果我有一个表示边长为n的立方体的数组,则数组长度为n * n * n。

例如,如果n = 4且数组长度为64,我想要一个位于多维数据集外层的索引列表。所以像0-15,16-19,20,23,24,27,28-31,32-35,36,39,40,43,44-47,48-63。

我知道这是对mod和div的一些创造性使用,但我感到困惑。

1 个答案:

答案 0 :(得分:0)

procedure TForm1.Button1Click(Sender: TObject);
var
I, n: Integer;
begin
Memo1.Lines.Clear;
n := 4;
for I := 0 to n*n*n-1 do
begin
  if (I mod n) = 0 then
    Memo1.Lines.Add(I.ToString + '  X min')

  else if (I mod n) = (n-1) then
    Memo1.Lines.Add(I.ToString + '  X max')

  else if ((I div n) mod n) = 0 then
    Memo1.Lines.Add(I.ToString + '  Y min')

  else if ((I div n) mod n) = (n-1) then
    Memo1.Lines.Add(I.ToString + '  Y max')

  else if ((I div n) div n) = 0 then
    Memo1.Lines.Add(I.ToString + '  Z min')

  else if ((I div n) div n) = (n-1) then
    Memo1.Lines.Add(I.ToString + '  Z max')

  else
    Memo1.Lines.Add(I.ToString + '  ')
end;
end;

制作一个清单:

0  X min
1  Y min
2  Y min
3  X max
4  X min
5  Z min
6  Z min
7  X max
8  X min
9  Z min
10  Z min
11  X max
12  X min
13  Y max
14  Y max
15  X max
16  X min
17  Y min
18  Y min
19  X max
20  X min
21  
22  
23  X max
24  X min
25  
26  
27  X max
28  X min
29  Y max
30  Y max
31  X max
32  X min
33  Y min
34  Y min
35  X max
36  X min
37  
38  
39  X max
40  X min
41  
42  
43  X max
44  X min
45  Y max
46  Y max
47  X max
48  X min
49  Y min
50  Y min
51  X max
52  X min
53  Z max
54  Z max
55  X max
56  X min
57  Z max
58  Z max
59  X max
60  X min
61  Y max
62  Y max
63  X max