我有一个算法,我已经试着解决了很长一段时间.我正在与以下人员合作:
- 我有一个"group"数组,它由六个元素组成,而且总是六个元素
- 我有一个由3到16个元素组成的"细节"数组
- 我有一个"矩阵"数组,表示一个包含12列8行的表
我的组数组可能如下所示(在C#中):
string[] groups = new string[] { "1_1", "1_2", "1_3", "2_1", "2_2", "2_3" };
个
我的细节数组可能如下所示(在C#中):
string[] details = Enumerable.Range(1, 16).Select(x => x.ToString()).ToArray();
个
我将列数和行数作为参数接收,然而,无论出于何种目的和目的,它总是分别为12x8.这意味着我有一个由96个元素组成的矩阵.我 Select 了以"列为主"的方式填充矩阵,因为我认为它会比其他方式更简单(但如果您认为以行为主的方式更好地工作,请分享!)所以,我有一个这样的模式:
所需的模式如下:
在每个单元格中,第一个数字表示"Groups"数组的索引,而第二个数字表示"Details"数组的索引.
归根结底,我想要的是这样的东西:
我提到过,"细节"数组可以只有3个元素.这意味着我的矩阵应该是这样的:
如果元素多于8个但少于16个,我不需要"换行".例如,如果"Details"数组中有10个元素,我的结果将如下所示:
我try 了各种方法来满足这些要求,但到目前为止,我还没有成功,包括for、Foreach和While循环(有时是嵌套的,有时不是),以及各种"映射"(例如使用词典辅助),或者试图从"Current Column"、"Current Row"和"Current Index"的某种组合以及对这些数字的操作(如除法、乘法和余数)中"推断"适当的索引.任何帮助都将不胜感激.(尤其是那些更动态、算法更简单的,但在这一点上我不能太挑剔!)
我一直在LINQPad上玩耍,所以一系列的声明是很棒的.然而,我并不介意用其他语言甚至伪代码进行回复.