Często oglądamy teledyski na Youtube. Wiele kanałów YouTube, na których znajdują się teledyski, jest „obsługiwanych przez VEVO”. Można je łatwo zidentyfikować, osadzając VEVO w miniaturach filmów i dodając VEVO do nazwy kanału.
Teraz napisz kod, aby sprawdzić, czy ciąg podany przez użytkownika jest kontem użytkownika VEVO, czy nie.
Wymagania dotyczące prawidłowych ciągów kont użytkowników VEVO:
Może zawierać tylko wielkie i małe litery oraz cyfry. (bez białych znaków i interpunkcji)
Nie może przekraczać 80 znaków.
Musi mieć podciąg „VEVO” na końcu łańcucha
Przypadki testowe:
Prawidłowe dane wejściowe:
AdeleVEVO
ConnieTalbotVEVO
SHMVEVO
justimberlakeVEVO
DJMartinJensenVEVO
test123VEVO
Nieprawidłowe dane wejściowe:
syam kapuk
jypentertainment
Noche de Brujas
testVEVO123
Oczywiście, ponieważ jest to gra w golfa , szukam najkrótszego kodu w dowolnym języku programowania.
code-golf
string
decision-problem
Bagas Sanjaya
źródło
źródło
VEVO
orazūņīčōdēVEVO
test123VeVo
i jeden z ponad 80 znakamiạ
iẠ
cyfry w innych alfabetach, na przykład九
(9)Odpowiedzi:
Python 2 , 45 bajtów
-3 bajty dzięki Rod. -2 bajty dzięki ovs.
Wypróbuj online!
Rozwiązanie wyrażenia regularnego okazuje się być dłuższe.
źródło
Japt v2.0a0,
2016 bajtówZwraca
1
za ważne lub0
za nieprawidłowe.[\l\d]
działałby również zamiast[^\W_]
tej samej liczby bajtów.Wypróbuj | Sprawdź wszystkie przypadki testowe
Objaśnienie :
è
zlicza liczbę dopasowań RegEx na wejściu. W Japt\w
klasa RegEx nie zawiera podkreślenia.źródło
;¥oB+mc)¯80 ©"VEVO"¥Ut4n
B+mc
:) Przy okazji, gdyby Japt2 miał klasę postaci[A-Za-z0-9]
, moglibyśmy pokonać Retinę tutaj! Może nawet warto nadpisać\w
&\W
.JavaScript (ES6),
27363431 bajtówZaoszczędzono 2 bajty dzięki @Neil i 3 bajty dzięki @Shaggy
Przypadki testowe
Pokaż fragment kodu
źródło
\w
pasuje też do_
s?((?!_)\w)
oszczędza 2 bajty.[^\W_]
zadziałałoby na oszczędności 3 bajtów ?/^[^\W_]{0,76}VEVO$/.test
czy coś?PHP , 51 bajtów
-10 bajtów dzięki @Ismael Miguel za użycie
<?=
zamiast<?php echo
! i usunięcie tagu zamykającegoWypróbuj online!
Dzięki za inne odpowiedzi, więc nie musiałem pisać wyrażenia regularnego!
źródło
<?php echo
możesz zrobić<?=preg_match("/^[^\W_]{0,76}VEVO$/",fgets(STDIN));
.[^\W_]
po prostu użyj\w
, który jest taki sam jak[a-zA-Z_]
.APL (Dyalog) , 25 bajtów
Wypróbuj online!
źródło
C (gcc) , 83 bajty
Wypróbuj online!
źródło
return
oświadczenia, jak to się zwracac
? Nieokreślone zachowanie?Dyalog APL , 47 bajtów
Wypróbuj online!
Czyste wyrażenie regularne ma 32 bajty , ale jest też o wiele bardziej nudne niż to podejście.
źródło
⍣¯1
sprawdzaćVEVO
i potrzebować ochrony dfn, możesz to zrobić'VEVO'≡¯4↑⍵
. Trochę się{('VEVO'≡¯4↑⍵)∧∧/⍵∊⎕D,⎕A,(819⌶)⎕A}
↑
.. Są jednak inne lepsze sposoby na wykonanie tego wyzwania (tj. Odpowiedź Eriksa) i podoba mi się ten pomysł: pBrud , 13 bajtów
Wypróbuj online!
Nic szczególnego tutaj. Dopasuj
e
dane wejściowe do wzorca: maksymalnie 76n
znaków alfanumerycznych, po których następuje ciągVEVO
. Drukuje1
dla dopasowania i0
bez dopasowania. Przypomniałem sobie, że ostatni cytat można usunąć na końcu wiersza, ale najwyraźniej powoduje to tylko błąd analizy.źródło
C # (.NET Core) , 87 + 18 = 105 bajtów
Wypróbuj online!
źródło
a=>a.All(x=>char.IsLetterOrDigit(x)&x<123)&a.Length<81&a.EndsWith("VEVO")
tylko litery ASCII lub 67 + 18:a=>a.All(x=>char.IsLetterOrDigit(x))&a.Length<81&a.EndsWith("VEVO")
z obsługą Unicode> <> ,
147125 bajtówWypróbuj online!
> <> , 147 bajtów
Wypróbuj online!
Wypisuje 1, jeśli ciąg wejściowy jest prawidłowy i nic dla niepoprawnego wejścia.
Edycja 1: Zmieniono kontrole alfanumeryczne, aby używać zakresów zamiast porównywania z każdym znakiem. (oszczędność 22 bajtów)
źródło
Bash,
532630 bajtówWyjdź z kodu 0 dla WAŻNYCH wyników i 1 dla NIEPRAWIDŁOWYCH wyników.
Nadal pracuję na 80 lub mniej znaków.-27 bajtów od usunięcia danych wyjściowych dzięki @KeyWeeUsr
+4 bajty, naprawiono wyrażenia regularne (tak samo jak wszyscy inni)
Wypróbuj online!
źródło
echo 1
na prawdę lub po prostu przejść bez echa. Nie ma potrzeby powtarzania czegokolwiek, ponieważ nadal otrzymujesz kod wyjścia, który faktycznie sprawdzasz&&
i||
> <> ,
10189838194 bajtówEdycja:
Przełączono na sprawdzanie znaków niealfanumerycznych zamiast alfanumerycznych.Odsunięto, bo zapomniałem sprawdzić między Z i a. Dzięki @Emigna. Zgrywaj te utracone bajtyEdycja 2: Mogę też całkowicie się ich pozbyć}}}}. Dzięki Teal Pelikan za to i znalezienie problemu z TIO
Edycja 3: zastąpiono ~~~ ap
Nie wiem, dlaczego to nie zadziała w TIO, ale tutaj działa dobrze .Problem polegał na tym, że polecenia {} w TIO nie działają dla pustej listy. Wypróbuj tutajJak to działa
Dla spójności, zastępując; w ostatnim wierszu z niepoprawną instrukcją powoduje, że każde wyjście jest błędem.
źródło
C ++,
129105102 bajtówDzięki innym odpowiedziom, które pokazały mi, że
dzięki Zacharýmu mogę policzyć liczbę znaków -2 bajty
TIO LINK
źródło
r
i po prostu mieć regex w wywołaniustd::regex_match
?Skumulowane , 21 bajtów
Wypróbuj online!
źródło
05AB1E, 21 bytes
Try it online!
źródło
Java (OpenJDK 8),
3736 bytesPretty simple answer using some lovely regex.
Quite possibly the shortest Java answer I've ever done.
-1 bytes thanks to Neil on the Javascript answer
Try it online!
źródło
Retina, 18 bytes
Try it online!
or
Try it online!
źródło
Haskell, 75 bytes
-2 bytes thanks to user28667.
Try it online!
źródło
drop(length s-4)
and extractlength s
Deorst, 22 bytes
Try it online!
Just uses the regex found by Shaggy
źródło
V, 17 bytes
Try it online!
Hexdump:
Compressed regexes for the win!
źródło
Ruby -n, 22+1 = 23 bytes
Output
0
if true,nil
if falseTry it online!
Using the same boring regex as everybody else.
źródło
Swift 4, 113 bytes
Try it online!
źródło
AWK, 23 bytes
Try it online!
Outputs the account name if valid, and outputs nothing if it isn't valid
źródło
Clean, 61 bytes
Try it online!
źródło
Perl 5,
3529+1(-a) = 30 bytes-6 bytes thanks to ETHproductions
Added 4 bytes. Didn't see that underscore wasn't allowed.
This is my first golf, so here's hoping I did it right.
Returns 1 if valid, 0 if not.
Try it online!
źródło
print/^\w{1,76}VEVO$/?1:0
+0
converts match bool into number, rather than?1:0
, saves 2 bytes. Calling with-ple
prints$_
for you. So:perl -ple '$_=/^[^\W_]{0,76}VEVO$/+0'
. 25 bytes. If you are happy to get blanks on non-matching lines,$_=/^[^\W_]{0,76}VEVO$/
is 23 bytes.Google Sheets, 33 Bytes
Anonymous worksheet function that takes input from range
A1
and outputs to the calling cellźródło
=RegexMatch(A1,"^[^\W_]{0,76}VEVO")
without any feedback to the user and executesClojure, 146 bytes
Try it online!
This would be much shorter using a regex, but I figured doing it manually would be more interesting.
źródło
ends-with?
function, even though that's part of the standard library.