Набор правил сопоставления с набором входных данных в Java - PullRequest
2 голосов
/ 31 октября 2019

Я работаю над проблемой, когда у меня есть два набора ввода

Input1:

Несколько наборов правил (пример):

RuleSet1:

1. I am $name
2. I am $age years old
3. $bookname is my favorite book
   ....

RuleSet2:

1. I love $sportname
2. $color is my favorite color
   ....

RuleSet3:

1. $fruit is my favorite fruit
2. I am a $diet
3. I speak $language
4. I am from $countryname
   ....

Здесь $ name, $ age, $ bookname ... являются заполнителями. Таких наборов правил может быть несколько. Ограничения нет.

Input2:

Несколько наборов входных строк.

Set 1:

1. I am 26 years old
2. I am James
   .....

Набор 2:

1. I am John
2. ToKillAMockinBird is my favorite book
   .......

Набор 3:

1. TuesdaysWithMorrie is my favorite book
2. I am Bill
3. I am 26 years old
   ......

Набор 4:

1. I am Jack
2. I am 27 years old
3. WarAndPeace is my favorite book
   ......

Набор 5:

1. I am a vegan
2. I speak English
   ......

Набор 6:

1. Purple is my favorite color
2. I love football
   ......

Постановка задачи:

Для каждого набора строк на входе 2 мне нужно сопоставить с входом 1 и сказать, появились ли эти строки в том же порядке или нет.

Выход:

Set1 --> false
Set2 --> true
Set3 --> false
Set4 --> true
Set5 --> true
Set6 --> false

Я пытался перебором, перебирая каждую строку в каждом входном наборе и проверяя, существует ли она или нет, если да, давая им число, наконец проверяя, находятся ли эти числа в порядке возрастания илине. Но это не эффективно. Входные данные Set1, set2 могут быть огромными наборами данных. Есть ли лучший способ решить это?

1 Ответ

0 голосов
/ 31 октября 2019

Вот мысль: объединить строки в наборах правил и входных наборах в одну строку с некоторым специальным разделителем (или, альтернативно, окружающим шаблоном)

, чтобы набор правил # 1 мог выглядеть следующим образом
I am $name ### I am $age years old ### $bookname is my favorite book
или как это
[I am $name] [I am $age years old] [$bookname is my favorite book]

тогда вы можете сделать то же самое для входных наборов и сравнить. мне кажется, что замены заполнителей на регулярное выражение \w+ может быть достаточно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...