Мы часто видим музыкальные клипы на Youtube. Многие каналы Youtube, на которых размещены музыкальные клипы, «работают на VEVO». Их можно легко идентифицировать, добавив VEVO на миниатюры видео и добавив VEVO к названию канала.
Теперь напишите некоторый код, чтобы проверить, является ли данная пользователем строка учетной записью VEVO или нет.
Требования к действительным строкам учетной записи VEVO:
Должен содержать только прописные, строчные и цифры. (без пробелов и знаков препинания)
Не должен превышать 80 символов.
Должен иметь подстроку "VEVO" в конце строки
Тестовые случаи:
Допустимые входы:
AdeleVEVO
ConnieTalbotVEVO
SHMVEVO
justimberlakeVEVO
DJMartinJensenVEVO
test123VEVO
Неверные данные:
syam kapuk
jypentertainment
Noche de Brujas
testVEVO123
Конечно, потому что это код-гольф , я ищу самый короткий код, используя любой язык программирования.
code-golf
string
decision-problem
Багас Санджая
источник
источник
VEVO
аūņīčōdēVEVO
test123VeVo
и один с более чем 80 символамиạ
иẠ
и цифры в других алфавитах, например九
(9)Ответы:
Python 2 , 45 байт
-3 байта благодаря Роду. -2 байта благодаря овс.
Попробуйте онлайн!
Решение регулярных выражений оказывается длиннее.
источник
Japt v2.0a0,
2016 байтВозвращает
1
за действительный или0
за недействительный.[\l\d]
будет также работать вместо того[^\W_]
же количества байтов.Попробуй это | Проверьте все тесты
Объяснение :
è
подсчитывает количество совпадений RegEx на входе. В Japt\w
класс RegEx не содержит подчеркивания.источник
;¥oB+mc)¯80 ©"VEVO"¥Ut4n
B+mc
:) Кстати, если у Japt2 был класс персонажей для[A-Za-z0-9]
, мы могли бы победить Retina здесь! Может даже стоить переопределить\w
&\W
.JavaScript (ES6),
27363431 байтСохранено 2 байта благодаря @Neil и 3 байта благодаря @Shaggy
Контрольные примеры
Показать фрагмент кода
источник
\w
соответствует_
s?((?!_)\w)
экономит 2 байта.[^\W_]
работать для сохранения 3 байта ?/^[^\W_]{0,76}VEVO$/.test
или что?PHP , 51 байт
-10 байт спасибо @Ismael Miguel за использование
<?=
вместо<?php echo
! и удаление закрывающего тегаПопробуйте онлайн!
Спасибо за другие ответы, поэтому мне не пришлось писать регулярные выражения!
источник
<?php echo
вы можете сделать<?=preg_match("/^[^\W_]{0,76}VEVO$/",fgets(STDIN));
.[^\W_]
, чтобы просто использовать\w
, что так же, как[a-zA-Z_]
.APL (Дьялог) , 25 байт
Попробуйте онлайн!
источник
C (gcc) , 83 байта
Попробуйте онлайн!
источник
return
заявлений, как это вернутьc
? Неопределенное поведение?Дьялог АПЛ , 47 байт
Попробуйте онлайн!
Чистое решение регулярных выражений составляет 32 байта , но также гораздо скучнее, чем этот подход.
источник
⍣¯1
чтобы использовать для проверкиVEVO
и необходимости dfn охранник, вы можете сделать'VEVO'≡¯4↑⍵
. Меня немного заводит{('VEVO'≡¯4↑⍵)∧∧/⍵∊⎕D,⎕A,(819⌶)⎕A}
↑
. Есть и другие лучшие способы сделать это испытание (например, ответ Эрикс), и мне нравится эта идея: pГрязь , 13 байт
Попробуйте онлайн!
Здесь нет ничего особенного. Сопоставьте
e
ввод ntire с шаблоном: не более 76 буквенно-n
цифровых символов, за которыми следует строкаVEVO
. Отпечатки1
для матча и0
без матча. Я вспомнил, что последняя кавычка может быть удалена в конце строки, но, очевидно, это просто вызывает ошибку разбора.источник
C # (.NET Core) , 87 + 18 = 105 байт
Попробуйте онлайн!
источник
a=>a.All(x=>char.IsLetterOrDigit(x)&x<123)&a.Length<81&a.EndsWith("VEVO")
только буквы ASCII или 67 + 18:a=>a.All(x=>char.IsLetterOrDigit(x))&a.Length<81&a.EndsWith("VEVO")
с поддержкой юникода> <> ,
147125 байтПопробуйте онлайн!
> <> , 147 байт
Попробуйте онлайн!
Это печатает 1, если входная строка является допустимой и ничего для недопустимого ввода.
Редактировать 1: Изменены буквенно-цифровые проверки для использования диапазонов, а не сравнения с каждым символом. (экономя 22 байта)
источник
Баш,
532630 байтВыйдите код 0 для недействительных результатов и 1 для недействительных результатов.
Все еще работаю на 80 символов или меньше.-27 байт при удалении вывода благодаря @KeyWeeUsr
+4 байта, исправлено регулярное выражение (как и все остальные)
Попробуйте онлайн!
источник
echo 1
за правду или просто идти без всякого эха. Не нужно ничего&&
||
> <> ,
10189838194 байтаИзменить:
переключен на проверку не буквенно-цифровых символов, а не буквенно-цифровых.Переключился назад, потому что я забыл проверить между Z и a. Спасибо @Emigna. Разорвать эти потерянные байты, хотяРедактировать 2: Кроме того, я могу полностью избавиться от них}}}}. Спасибо Teal pelican за это и обнаружил проблему с TIO
Изменить 3: заменил ~~~ на ap
Я не знаю , почему это не будет работать на TIO, но он отлично работает здесь .Проблема заключалась в том, что команды {} в TIO не работают для пустого списка. Попробуй здесьКак это работает
Для согласованности, замены; в последней строке недопустимая инструкция делает каждый вывод ошибкой.
источник
C ++,
129105102 байтаБлагодаря другим ответам, которые показали мне, что я могу посчитать количество символов
-2 байта благодаря Zacharý
TIO LINK
источник
r
и просто включить регулярное выражение в вызовеstd::regex_match
?С накоплением , 21 байт
Попробуйте онлайн!
источник
05AB1E , 21 байт
Попробуйте онлайн!
источник
Java (OpenJDK 8) ,
3736 байтДовольно простой ответ, используя несколько прекрасных регулярных выражений.
Вполне возможно, самый короткий ответ Java, который я когда-либо делал.
-1 байт благодаря Нейлу в ответе на Javascript
Попробуйте онлайн!
источник
Сетчатка , 18 байт
Попробуйте онлайн!
или
Попробуйте онлайн!
источник
Haskell , 75 байт
-2 байта благодаря пользователю 28667.
Попробуйте онлайн!
источник
drop(length s-4)
и извлекаетеlength s
Deorst , 22 байта
Попробуйте онлайн!
Просто использует регулярное выражение, найденное Шегги
источник
V , 17 байт
Попробуйте онлайн!
HexDump:
Сжатые регулярные выражения для победы!
источник
Ruby -n, 22 + 1 = 23 байта
Выведите,
0
если true,nil
если falseПопробуйте онлайн!
Использование того же скучного регулярного выражения, как и всех остальных.
источник
Swift 4 , 113 байт
Попробуйте онлайн!
источник
AWK , 23 байта
Попробуйте онлайн!
Выводит имя учетной записи, если оно допустимо, и ничего не выводит, если оно недействительно
источник
Чисто , 61 байт
Попробуйте онлайн!
источник
Perl 5 ,
3529 + 1 (-a) = 30 байт-6 байт благодаря ETHproductions
Добавлено 4 байта. Не видел, что подчеркивание не было разрешено.
Это мой первый гольф, так что надеюсь, я все сделал правильно.
Возвращает 1, если действует, 0, если нет.
Попробуйте онлайн!
источник
print/^\w{1,76}VEVO$/?1:0
+0
преобразует bool соответствия в число, а не?1:0
сохраняет 2 байта. Звонок с-ple
принтами$_
для вас. Итак:perl -ple '$_=/^[^\W_]{0,76}VEVO$/+0'
. 25 байтов. Если вы счастливы получить пробелы на несовпадающих строках,$_=/^[^\W_]{0,76}VEVO$/
это 23 байта.Google Sheets, 33 байта
Функция анонимного рабочего листа, которая принимает данные из диапазона
A1
и выводит их в вызывающую ячейкуисточник
=RegexMatch(A1,"^[^\W_]{0,76}VEVO")
без обратной связи с пользователем и выполняетClojure , 146 байт
Попробуйте онлайн!
Это было бы намного короче с использованием регулярных выражений, но я подумал, что делать это вручную было бы более интересно.
источник
ends-with?
функцию, даже если это часть стандартной библиотеки.