Рассмотрим следующее:
У нас есть сетка с X , O , которая представлена единственной строкой T .
Моя задача - проверить, существует ли подмножество S из X в строке T , где расстояние между каждым символом в S равно (т.е. мы можем наблюдать эквидистантную последовательность букв). Я приведу несколько примеров.
XXX - верно, поскольку расстояние равно 0
X o X o X - верно, поскольку расстояние равно 1
X oxX oo X - истина, так как расстояние равно 2 и существует подмножество X с индексами: [0, 3, 6]
Можно ли решить эту задачу с помощью регулярного выражения? Я придумал это: ".*?((X|O).{0,2})\1\2.*"
, хотя в некоторых тестах это не удается (X ox X ox X совпадает, а X oo X ox X - нет).
Кроме того;Есть ли умный способ достичь этого с помощью одного регулярного выражения? Я предполагаю, что мы все еще можем генерировать несколько регулярных выражений для каждого расстояния, которое нам нужно проверить, например: "(.*?(X|O)\1\1.*)|(.*?(X|O).\1.\1.*)|(.*?(X|O).{2}\1.{2}\1.*)"