Я начал думать о решении моей проблемы
Проблема: У меня есть вводимые пользователем данные, которые выглядят аналогично этому
"car": {
"parts": [
{
"unit": "HorsePower"
"operator": "greaterThan"
"value": "250"
},
{
"unit": "WheelSize"
"operator": "equals"
"value": "26"
},
]
}
И я хочу найти возможные конфликты с другими автомобилями, имеющими такой же набор деталей
Вот несколько примеров, которые конфликтуют и не конфликтуют.
Operator - это Enum и может быть любым из этих [" betterThan "," lessThan "," equals "], если все части одинаковы или могут быть одинаковыми с меньшим или большим чем. Тогда возникает конфликт Примеры
"car": {
"parts": [
{
"unit": "HorsePower"
"operator": "greaterThan"
"value": "250"
},
{
"unit": "WheelSize"
"operator": "equals"
"value": "26"
},
]
}
Конфликтует с
"car": {
"parts": [
{
"unit": "HorsePower"
"operator": "equals"
"value": "260"
},
{
"unit": "WheelSize"
"operator": "equals"
"value": "26"
},
]
}
Но не с
"car": {
"parts": [
{
"unit": "HorsePower"
"operator": "lessThan"
"value": "250"
},
{
"unit": "WheelSize"
"operator": "equals"
"value": "26"
},
]
}
У меня было logi c для этого раньше , когда не было ровных. Затем я создал ключи для всех модулей и добавил их в каталог
Вот один ключевой пример «HorsePowerEquals250WheelSizeEquals26». Затем он выдавал мне предупреждение, если была ошибка. Но этот лог c больше не работает, так как «HorsePowerEquals250WheelSizeEquals26» конфликтует с «HorsePowerGreaterThan200WheelSizeEquals26», но не дает мне предупреждения.
У меня есть некоторые решения, но я хочу услышать от вас раньше Я начинаю реализовывать вещи.
Все написано в C# классе
Я не жду, что вы, ребята, напишете решение за меня, но подскажите несколько идей для решения.
Изменить:
Одно из решений, которое я имел в виду: 1. Сделайте ключи только для всех единиц в списке деталей, например, «HorsePowerWheelSize», и добавьте их в словарь с помощью <string, List<Part>>
И затем l oop через этот словарь, где все части построены на одних и тех же модулях, и проверьте, не сталкиваются ли какие-либо из них
Пример
Foreach KeyPart в KeyPartsDictionary
затем => проверьте все детали по сравнению с остальными