我正在使用米勒指数 (hkl) 进行一些晶体学计算,即存储在int[]
数组中的整数三元组 (hkl)。我正在使用 C#。到目前为止,如果我设置一个最大值 hmax、kmax 和 lmax,我可以填充一个包含所有等效项的列表:
List<int[]> milind = new List<int[]>;
int[] mindex = new int[3];
for ( int h = -hmax ; h <= hmax; h++)
{
mindex[0] = h;
for ( int k = -kmax ; k <= kmax; k++)
{
mindex[1] = k;
for ( int l = -lmax ; l <= lmax; l++)
{
mindex[2] = l;
milind.Add(mindex);
}
}
}
问题:如何使用 C# 删除/过滤所有等价物,即一组 [h,k,l] 的排列?
示例:假设我们有[h=1,k=0,l=0]
,我想删除/过滤:
[0,1,0]
, [0,0,1]
, [-1,0,0]
, [0,-1,0]
, [0,0,-1]
... 等。仅保留[0,0,1]
在列表中。
如果您需要更多信息,请告诉我。