Эта задача довольно проста. В качестве входных данных вы берете регулярное выражение.
Затем вы выводите правду / ложь о том, соответствует ли ваш исходный код регулярному выражению. Это так просто! Еще две вещи:
- Нет встроенных quine; вы можете, однако, получить доступ к исходному коду кода через файл ввода-вывода и т. д.
- Это код-гольф , поэтому выигрывает самый короткий код в байтах !
пример
Если в вашем исходном коде было сказано, abc
вход a\wc
возвращал бы true, а вход a\dc
возвращал бы false.
code-golf
quine
regular-expression
Maltysen
источник
источник
\d
не является особенным в BRE; это соответствует характеруd
. 3. Выбор конкретного варианта регулярного выражения ограничивает вашу задачу языками, которые его поддерживают, и немногие языки поддерживают BRE. Это намеренно?Ответы:
Z shell, 12 байтов
Условные выражения Zsh понимают только коды выхода, а сценарии завершают работу с 0 или 1 соответственно.
Кроме того, это печатает непустую строку (исходный код) для совпадения и пустую строку для несоответствия, которые могут быть как значения истина / ложь в сочетании с
test
/[
.Программа читает свой собственный файл, но согласно этому комментарию OP это разрешено.
источник
-v
. Или ...JavaScript (ES6), 39
источник
Python 3, 119 байт
Это выглядит круче, IMO (и не читает файл).
Python 3, 67 байт
Добавлено после прочтения этого комментария .
источник
int
короче чемbool
.Юлия,
6454 байтаЮлия Регулярные выражения используют PCRE. Хотя чтение исходного кода файла является стандартной лазейкой для quines, в этом случае это было явно разрешено. Принимает ввод без завершающей строки.
источник
Japt, 22 байта
Стандартная структура Quine с добавлением нескольких байтов для решения этой задачи. Истина = совпадение (я), ложь = ноль. Попробуйте онлайн!
источник
Mathematica, 63 байта
Обратите внимание на завершающий пробел. Использует стандартный механизм Mma quine и проверяет, соответствует ли он регулярному выражению.
источник
Perl, 21 байт
17 байтов плюс 4 байта для
-pl0
. Запустите так:Исходный файл должен содержать только приведенный выше код (без шебанга, без завершающей строки). Выводится,
1
если регулярное выражение совпадает, и пустая строка, если это не так (пустая строка в Fall - falsey).Четыре байта могут быть сохранены, если гарантируется, что ввод не заканчивается новой строкой:
Запустите так:
say
требует Perl 5.10+ и должен быть включен с-M5.010
. По словам Меты , «-M5.010
когда это необходимо, это бесплатно», давая оценку 17 байт.Как это устроено
Это простая вариация стандартной «читерской» квинны:
Это открывает файл с именем в
$0
и читает содержимое с<0>
.$_=<0>=~$_
читает одну строку из исходного файла, сопоставляет регулярное выражение с содержимым$_
(которое было прочитано-p
флагом) и присваивает результат$_
.-p
печатает$_
автоматически в конце.источник
Джольф,
1815 байтПоддерживает JS-вкус RegEx, надеюсь, все в порядке. Попробуй это здесь! ,
комментарии:
источник
x.step
это не функция.math
.𝔼𝕊𝕄𝕚𝕟, 14 символов / 26 байтов (неконкурентные)
Try it here (Firefox only).
Использование версии с исправлениями ошибок, написанными после испытания.
объяснение
ПРИМЕЧАНИЕ. Блоки копирования НЕ являются операторами quine. Предполагается, что они являются более универсальными альтернативами объявлениям переменных.
источник
Ⅹ
на 10.