Koronkorko - финское слово для обозначения сложных процентов . Мы не хотим сложного интереса к нашим строкам, поэтому давайте найдем самое короткое из возможных регулярных выражений, чтобы исключить его.
Если задана строка, состоящая только из прописных буквенных символов AZ, определите самое короткое из возможных регулярных выражений, которое соответствует строке, если оно не содержит подстроки KORONKORKO
. Любая строка, содержащая KORONKORKO
подстроку, не должна соответствовать регулярному выражению.
Только символы A
- Z
, [
, ]
, -
, ^
, ,
?
, *
, +
, |
, (
, и )
следует использовать в выражении.
Я думаю, что это можно сделать с помощью 118 символов в выражении. Вы можете сделать это короче?
Примечание: этот вызов от Ohjelmointiputka (на финском языке).
!
был разрешенный символ, вы могли бы сделать^((?!KORONKORO).)*$
за 19 байтов.!
не разрешают.-
и^
внутри классов символов (поэтому^
не может использоваться в качестве якоря), а совпадение учитывается только в том случае, если регулярное выражение соответствует всей строке (т.е. неявное окружение^$
, как в отличие от обычных "регулярных выражений", которые считают строку соответствующей, если какая-либо ее часть соответствует регулярному выражению)Ответы:
204 персонажа
Генерируется путем превращения
.*KORONKORKO.*
в конечный автомат, обращения конечного автомата и превращения его в регулярное выражение.источник
Python,
777997118 байтРедактировать 3: переписать. Использует вложенные lookaheads
Regex 101
Редактировать 2: Добавлено '$ |' на протяжении всего регулярного выражения. Теперь, если сопоставлен префикс KORONKORKO, следующий элемент для сопоставления - это конец строки, символ, заканчивающий префикс, или символ, который расширяет префикс, если за ним следует что-то, заканчивающее префикс.
Это регулярное выражение работает с
re.fullmatch()
, который был добавлен в Python 3.4. Для использования сre.match()
,^
и$
нужно добавить в начало и конец шаблона, соответственно, еще на 2 байта.Regex101 ссылка
Предыдущее неверное решение (см. Комментарии):
Редактировать: Добавлен сингл K
источник
K
.KKORONKORKO
^
и конец$
не нужны. Также=
и$
не допускаются.