我有一个有趣的问题,我很难把头放在循环逻辑上以得到所需的东西。不幸的是,我正在开发的语言没有实现数组。这意味着我需要使用Foreach和/或While循环来完成此操作。
清单1:示例 格式: SampleName ^ NumOfCores
清单2:尺寸 格式: SizeName ^ Size
每个样本的每个大小名称都会重复,直到未知数为止。
例如,如果对象包含2个样本,每个样本具有1个核: Size1 ^ 1 | Size1 ^ 3 | Size2 ^ 1 | Size2 ^ 3 | Size3 ^ 1 | Size3 ^ 3
如果核心数超过1个,它们将依序排列,直到该样本的最大可能核心数。
例如,如果第一个样本具有2个核心,而第二个样本具有1个核心。 Size1 ^ 1 | Size1 ^ 3 | Size2 ^ 1 | Size2 ^ 3 | Size3 ^ 1 | Size3 ^ 3 | Size4 ^ 1 | Size4 ^ | Size5 ^ 1 | Size5 ^ | Size6 ^ 1 | Size6 ^
对于每个样本,我需要将3个大小关联到每个核。 CoreDimensions = NxNxN
鉴于以下示例列表,输出应为:
示例列表:
示例: Sample1 ^ 2 | Sample2 ^ 1
尺寸: Size_1 ^ 1 | Size_1 ^ 3 | Size_2 ^ 1 | Size_2 ^ 3 | Size_3 ^ 1 | Size_3 ^ 3 | Size_4 ^ 2 | Size_4 ^ | Size_5 ^ 2 | Size_5 ^ | Size_6 ^ 2 | Size_6 ^ | Size_7 ^ | Size_7 ^ | Size_8 ^ | Size_8 ^ | Size_9 ^ | Size_9 ^ | Size_10 ^ | Size_10 ^ | Size_11 ^ | Size_11 ^ | Size_12 ^ | Size_12 ^ | Size_13 ^ | Size_13 ^ | Size_14 ^ | Size_14 ^ | Size_15 ^ | Size_15 ^ >
每个索伦(Per Soren)的建议都是相同的列表,但采用JSON对象格式。
[{"SizeName": "Sample1","NumberOfCores": "2"},{"SizeName": "Sample2","NumberOfCores": "1"}]
[{"SizeName":"Size_1","SizeValue":"1"},{"SizeName":"Size_1","SizeValue":"3"},{"SizeName":"Size_2","SizeValue":"1"},{"SizeName":"Size_2","SizeValue":"3"},{"SizeName":"Size_3","SizeValue":"1"},{"SizeName":"Size_3","SizeValue":"3"},{"SizeName":"Size_4","SizeValue":"2"},{"SizeName":"Size_4","SizeValue":""},{"SizeName":"Size_5","SizeValue":"2"},{"SizeName":"Size_5","SizeValue":""},{"SizeName":"Size_6","SizeValue":"2"},{"SizeName":"Size_6","SizeValue":""},{"SizeName":"Size_7","SizeValue":""},{"SizeName":"Size_7","SizeValue":""},{"SizeName":"Size_8","SizeValue":""},{"SizeName":"Size_8","SizeValue":""},{"SizeName":"Size_9","SizeValue":""},{"SizeName":"Size_9","SizeValue":""},{"SizeName":"Size_10","SizeValue":""},{"SizeName":"Size_10","SizeValue":""},{"SizeName":"Size_11","SizeValue":""},{"SizeName":"Size_11","SizeValue":""},{"SizeName":"Size_12","SizeValue":""},{"SizeName":"Size_12","SizeValue":""},{"SizeName":"Size_13","SizeValue":""},{"SizeName":"Size_13","SizeValue":""},{"SizeName":"Size_14","SizeValue":""},{"SizeName":"Size_14","SizeValue":""},{"SizeName":"Size_15","SizeValue":""},{"SizeName":"Size_15","SizeValue":""}]
这种关系很容易理解。也许以另一种方式解释它会有所帮助。
对于每个样本,有N个核。 每个核心具有一组3个Dimension属性(SizeValue)。为了简单起见,假设它们是“长度”,“高度”和“宽度”。因此,每个内核应具有LxHxW。
我们可以假定,对于每个样本,都会有一个新的Size值迭代。但是,核心不会开始新的迭代。它们是固定顺序的。
逻辑上,尺寸将显示为:
[{"Name": "Length", "Value":"1"},{"Name":"Height","Value":"1"},{"Name":"Width","Value":"1"}]
单个示例的多个核看起来像这样:
[{"Name": "Length", "Value":"1"},{"Name":"Height","Value":"1"},{"Name":"Width","Value":"1"},{"Name": "Length", "Value":"2"},{"Name":"Height","Value":"2"},{"Name":"Width","Value":"2"}]
但是,当您将多个样本引入混合时,我们最终会得到以下结果:
[{"Name": "Length", "Value":"1"},{"Name": "Length", "Value":"2"},{"Name":"Height","Value":"1"},{"Name":"Height","Value":"2"},{"Name":"Width","Value":"1"},{"Name":"Width","Value":"2"}]
并且当您拥有具有多个样本的多个核心时:
[{"Name": "Length", "Value":"1"},{"Name": "Length", "Value":"2"},{"Name":"Height","Value":"1"},{"Name":"Height","Value":"2"},{"Name":"Width","Value":"1"},{"Name":"Width","Value":"2"},{"Name": "Length", "Value":"3"},{"Name": "Length", "Value":"4"},{"Name":"Height","Value":"3"},{"Name":"Height","Value":"4"},{"Name":"Width","Value":"3"},{"Name":"Width","Value":"4"}]
在这种情况下,LxWxH值为1和3的Core属于第一个样本,值2和4属于第二个样本。
所以当我完成后,我会得到这样的结果: