Тестер Quinean Regex


13

Цей виклик досить простий. В якості введення ви приймаєте звичайний вираз.

Тоді ви виводите truthy / falsey того, чи відповідає ваш вихідний код звичайному виразу. Це так просто! Ще дві речі:

  • Ніяких хинних вбудованих; ви можете, однак, отримати доступ до вихідного коду коду за допомогою файлу IO тощо.
  • Це , тому найкоротший код у байтах виграє!

Приклад

Якщо у вашому вихідному коді було сказано, abcвведення a\wcповернеться істинним, а введення a\dcповерне помилковим.


Приклад, будь ласка?
Mama Fun Roll

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ ні, це добре.
Мальтісен

2
1. Я не думаю, що BRE з простими класами символів є достатньо конкретним. Які функції BRE повинні підтримуватися? 2. \dне є особливим у BRE; це відповідає характеру d. 3. Вибір конкретного аромату регулярного вираження обмежує ваш виклик мовам, які його підтримують, і мало хто підтримує BRE. Це навмисно?
Денніс

2
Я б рекомендував залишити це відповіді. Якщо мова x використовує регулярний аромат y за замовчуванням, нехай він використовує цей аромат у цьому виклику.
Денніс

6
@Maltysen Чому ви не додасте приклад підрядки до тіла запитання?
feersum

Відповіді:


14

Z оболонка, 12 байт

grep "$@"<$0

Умови Zsh розуміють лише вихідні коди, а сценарії виходять відповідно з 0 або 1.

Крім того, це друкує не порожній рядок (вихідний код) для відповідності та порожній для невідповідності, який може бути таким же значенням "truthy / false" у поєднанні з test/ [.

Програма читає власний файл, але відповідно до цього коментаря ОП це дозволено.


3
Ааа Денніс переміг. ¯ \ _ (ツ) _ / ¯
Conor O'Brien

Це не працює. Розбивається на візерунки з пробілами в них.
feersum

@feersum Whoops! Дякуємо, що вказали на це. Я відредагував свою відповідь.
Денніс

2
Тепер він порушується, якщо він записаний у файл із пробілами в імені. Або файл, який називається -v. Або ...
Бен Мілвуд

@BenMillwood Я б звичайно сказав, що не зберігайте його з таким ім'ям файлу , але перехід на zsh робить його кулезахисним, не збільшуючи кількість байтів.
Денніс


9

Python 3, 119 байт

Це просто виглядає крутіше, IMO (і він не читає файл).

(lambda i:print(bool(__import__('re').search(input(),i))))("(lambda i:print(bool(__import__('re').search(input(),i))))")

Python 3, 67 байт

print(bool(__import__('re').search(input(),open(__file__).read())))

Додано після прочитання цього коментаря .


intкоротше, ніж bool.
кіт

7

Юлія, 64 54 байти

r=readline;show(ismatch(Regex(r()),open(r,@__FILE__)))

У регулярних виразах Julia використовується PCRE. Під час читання вихідного коду файлу це стандартна лазівка ​​для лайків, у цьому випадку це було явно дозволено. Здійснює введення даних без зворотного нового рядка.


3

Japt, 22 байти

"+Q ³sAJ fU"+Q ³sAJ fU

Стандартний каркас Quine з кількома байтами додано, щоб відповідати цьому виклику. Truthy = сірник (-и), фальш = нуль. Спробуйте в Інтернеті!

         // Implicit: U = input string, A = 10, J = -1, Q = quotation mark
"..."+Q  // Take this string and concatenate a quotation mark.
³        // Repeat three times.
sAJ      // Slice off the first 10 and last 1 chars.
fU       // Match U to the result.

2

Математика, 63 байти

StringMatchQ[ToString[#0, InputForm], RegularExpression[#1]] & 

Зверніть увагу на пробіл. Використовує стандартний механізм Mma quine і перевіряє, чи відповідає він регулярному вираженню.


2

Perl, 21 байт

open 0;$_=<0>=~$_

17 байт плюс 4 байти для -pl0. Бігайте так:

echo open | perl -pl0 quinean

Вихідний файл повинен містити тільки код вище (без шебангу, без зворотного нового рядка). Виводить, 1якщо регулярний вирівнювання відповідає, а порожній рядок, якщо він не відповідає (порожній рядок є фальсиєю в Perl).


Чотири байти можна зберегти, якщо вхід гарантовано не закінчиться в новому рядку:

open 0;say<0>=~<>

Бігайте так:

echo -n open | perl -M5.010 quinean

sayвимагає Perl 5.10+ і має бути ввімкнено -M5.010. За словами Meta , "той -M5.010, коли потрібно, безкоштовний", дає оцінку 17 байт.

Як це працює

Це проста варіація стандартної "обману" квітки:

open 0;print<0>

Це відкриває файл з ім'ям $0і читає вміст <0>.

$_=<0>=~$_читає один рядок з вихідного файлу, відповідає збіжці з регулярними виразами вмісту $_(які були прочитані -pпрапором) і присвоює результат $_. -pдрукується $_автоматично в кінці.


2

Джольф, 18 15 байт

Підтримує JS аромат RegEx, я сподіваюся, що це нормально. Спробуйте тут! .

 h$code.value#i

Прокоментував:

  $code.value#      the document's element "code" (the program container)
_h            i     and output if it has (matches) the input string (i.e. regex)

У якому браузері це працює? І Chrome, і Firefox скаржаться, що x.stepце не функція.
Денніс

@Dennis Huh. Я, мабуть, порушив перекладача минулої ночі. Що ще не так? Я зараз не можу налагоджуватись, перебуваю в школі.
Conor O'Brien

Добре. Тепер додайте ярлик до елемента "коду" документа, щоб ми могли його скоротити.
user48538

@ CᴏɴᴏʀO'Bʀɪᴇɴ Це також дає посилання на помилку для math.
Денніс

@Dennis Ага, ось чому. Я забув оновити HTML, я додав math.js. Я перегляну, коли приїду додому, якщо це не пізно. (Приблизно через 4 години)
Conor O'Brien

1

𝔼𝕊𝕄𝕚𝕟, 14 символів / 26 байт (неконкурентно)

⟮‼(ⒸⅩ222+ᶈ0)đï

Try it here (Firefox only).

Використання версії з виправленнями помилок, написаних після виклику.

Пояснення

⟮‼(ⒸⅩ222+ᶈ0)đï // implicit: ï=input
⟮               // copy block: copy following code for later use
 (ⒸⅩ222+ᶈ0)   // take convert 10222 to char, add stuff inside copy block
‼           đï // check if input matches resulting string
               // implicit output

ПРИМІТКА. Копіювальні блоки НЕ є операторами quine. Вони призначені для більш універсальної альтернативи змінним оголошенням.


1
Я думаю, ви можете зберегти байт, змінивши його на 10.
lirtosiast
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.