Циклическая логика с использованием 2 списков - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть интересная проблема, и я с трудом нахожу голову вокруг логики цикла, чтобы получить то, что мне нужно.К сожалению, язык, на котором я разрабатываю, не имеет реализованных массивов.Это означает, что для этого мне нужно использовать циклы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...