1

Тема: Задача про потоки

Доброго дня, допоможіть будь ласка реалізувати, або хоть щось подібне, заздалегідь дякую
сьогодні останній день

Припустимо, що є програма з трьома потоками, така, що
потiк 1 у нескiнченному циклi виконує дiї a1, a2, a3 саме в
такому порядку
потiк 2 у нескiнченному циклi виконує дiї b1, b2, b3 саме в
такому порядку
потiк 3 у нескiнченному циклi виконує дiї c1, c2, c3 саме в
такому порядку.
Припустимо, що середовище виконання гарантує, що
жодна пара зазначених дiй, що виконуються рiзними
потоками (a1 та c2), з його точки зору, не вiдбувається
одночасно, але нiяких iнших гарантiй щодо можливого
порядку виконання таких дiй (зi своєї точки зору) не надає.
Написати регулярний вираз, що задає множину усiх
можливих скiнченних послiдовностей дiй ai
, bi
, ci (i=1,2,3),
що виконуються програмою (з точки зору середовища) при
допустимих часткових скiнченних виконаннях програми.

Подякували: Yola1

2 Востаннє редагувалося Yola (05.12.2020 22:02:11)

Re: Задача про потоки

(?:a1|a2|a3|b1|b2|b3|c1|c2|c3)*

РЕД1. тю, забув про саме в такому порядку, а видалити не можу.

РЕД2. тю, та це просто, треба просто знайти, що нема зворотнього!

РЕД3. ааа, не так все просто.

3 Востаннє редагувалося koala (05.12.2020 22:59:41)

Re: Задача про потоки

Взагалі це як парсити HTML регулярками(англ.); але ідея приблизно така:

(?=^([abc][123])+$)(?=^(.*a1.*a2.*a3.*)+$)(?=^(.*b1.*b2.*b3.*)+$)(?=^(.*c1.*c2.*c3.*)+$)

Тут не реалізовані часткові завершення (тобто має бути ціла кількість a1,a2,3 і так само для b та c), але якщо ви це розберете, то вам уже нескладно буде доповнити.

Подякували: leofun011

4 Востаннє редагувалося Yola (06.12.2020 00:44:11)

Re: Задача про потоки

Ось, але воно вимагає, щоб там були лише a1, a2, a3, b1, b2, b3, c1, c2, c3. Використав багато глянь-довколо, вони всі мають виконуватись, це як &&.

^((?!a2[^a]*?a1)(?!b2[^b]*?b1)(?!c2[^c]*?c1)(?!a1[^a]*?a3)(?!b1[^b]*?b3)(?!c1[^c]*?c3)(?!a3[^a]*?a2)(?!b3[^b]*?b2)(?!c3[^c]*?c2)(?!a1[^a]*?a1)(?!b1[^b]*?b1)(?!c1[^c]*?c1)(?!a2[^a]*?a2)(?!b2[^b]*?b2)(?!c2[^c]*?c2).)*$

Розпізнає:

a1a2a3b1b2b3c1c2c3
a1b1c1a2b2c2a3b3c3
a2b2c2a3b3c3a1b1c1

Відкидає:

c1c1     c1b1c1
c1c3     c1b1c3
c2c2     c2b1c2
c2c1     c2b1c1
c1c3     c1b1c3

А тепер запитання уважному читачу. Чому розпізнає c3c3?

Подякували: leofun011