У меня есть интересная проблема, и я с трудом нахожу голову вокруг логики цикла, чтобы получить то, что мне нужно.К сожалению, язык, на котором я разрабатываю, не имеет реализованных массивов.Это означает, что для этого мне нужно использовать циклы Foreach и / или While.
Список 1: образцы Формат: Имя образца ^ NumOfCores
Список 2: Размеры Формат: SizeName ^ Size
Каждое имя размера повторяется для каждого образца до неизвестного числа.
Например, если объект содержит 2 образца с 1 ядром в каждом: Размер1 ^ 1 | Размер1 ^ 3 | Размер2 ^ 1 | Размер2 ^ 3 | Размер3 ^ 1 | Размер3 ^ 3
Если естьЕсли число ядер превышает 1, они будут следовать последовательно до максимально возможных ядер для этого образца.
Например, если первый образец имеет 2 ядра, а второй образец имеет 1 ядро.Размер1 ^ 1 | Размер1 ^ 3 | Размер2 ^ 1 | Размер2 ^ 3 | Размер3 ^ 1 | Размер3 ^ 3 | Размер4 ^ 1 | Размер4 ^ | Размер5 ^ 1 | Размер5 ^ | Размер6 ^ 1 | Размер6 ^
Для каждого образца мне нужно связать 3 размера с каждым ядром.CoreDimensions = NxNxN
Учитывая приведенные ниже примеры списков, выходные данные должны быть:
- Sample1-Core1: 1x1x1
- Sample1-Core2: 2x2x2
- Sample2-Core1: 3x3x3
Примеры списков:
Образцы: Образец1 ^ 2 | Образец2 ^ 1
Размеры: Размер_1 ^ 1 | Размер_1 ^ 3 | Размер_2 ^ 1 | Размер_2 ^ 3 | Размер_3 ^ 1 | Размер_3 ^ 3 | Размер_4 ^ 2 | Размер_4 ^ | Размер_5 ^ 2 | Размер_5 ^ | Размер_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 ^
Согласно предложению Сорена, этот список тот же, но в формате объекта 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 атрибутов измерения (SizeValue).Для простоты предположим, что это Длина, Высота и Ширина.Таким образом, каждое ядро должно иметь LxHxW.
Можно предположить, что для каждого образца будет новая итерация значений размера.Однако ядра не начинают новую итерацию.Они расположены в установленном порядке.
Логически, размеры будут отображаться так:
[{"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 относятся к первому образцу, а значения 2 и 4 относятся ко второму образцу.
Итак, когда я закончу, я получу что-то вроде этого:
- Образец 1, Core 1 = 1x1x1
- Образец 1, Core 2= 3x3x3
- Образец 2, Core 1 = 2x2x2
- Образец 3, Core 2 = 4x4x4