Wir sehen oft Musikvideos auf Youtube. Viele Youtube-Kanäle, die Musikvideos hosten, sind "powered by VEVO". Diese können leicht identifiziert werden, indem Sie VEVO in ihre Video-Thumbnails einbetten und VEVO an ihren Kanalnamen anhängen.
Schreiben Sie nun einen Code, um zu testen, ob eine vom Benutzer angegebene Zeichenfolge ein VEVO-Benutzerkonto ist oder nicht.
Voraussetzungen für gültige VEVO-Benutzerkonto-Zeichenfolgen:
Darf nur Großbuchstaben, Kleinbuchstaben und Ziffern enthalten. (kein Leerzeichen oder Interpunktion)
Darf nicht länger als 80 Zeichen sein.
Am Ende der Zeichenfolge muss der Teilstring "VEVO" stehen
Testfälle:
Gültige Eingaben:
AdeleVEVO
ConnieTalbotVEVO
SHMVEVO
justimberlakeVEVO
DJMartinJensenVEVO
test123VEVO
Ungültige Eingaben:
syam kapuk
jypentertainment
Noche de Brujas
testVEVO123
Da es sich um Code-Golf handelt , suche ich natürlich mit jeder Programmiersprache nach dem kürzesten Code.
quelle
VEVO
undūņīčōdēVEVO
test123VeVo
und einer mit mehr als 80 Zeichenạ
undẠ
und Ziffern in anderen Alphabeten, zum Beispiel九
(9)Antworten:
Python 2 , 45 Bytes
-3 Bytes dank Rod. -2 Bytes dank ovs.
Probieren Sie es online!
Eine Regex-Lösung ist länger.
quelle
Japt v2.0a0,
2016 BytesRückgabe
1
für gültig oder0
ungültig.[\l\d]
würde auch anstelle von[^\W_]
für die gleiche Byteanzahl arbeiten.Versuchen Sie es | Überprüfen Sie alle Testfälle
Erläuterung :
è
Zählt die Anzahl der Übereinstimmungen des RegEx in der Eingabe. In Japt enthält die\w
RegEx-Klasse keinen Unterstrich.quelle
;¥oB+mc)¯80 ©"VEVO"¥Ut4n
B+mc
:) Wenn Japt2 übrigens eine Charakterklasse hätte[A-Za-z0-9]
, könnten wir hier Retina schlagen! Könnte es sogar wert sein, übergangen zu werden\w
&\W
.JavaScript (ES6),
27363431 Byte2 Bytes dank @Neil und 3 Bytes dank @Shaggy gespeichert
Testfälle
Code-Snippet anzeigen
quelle
\w
zu_
s?((?!_)\w)
spart 2 Bytes.[^\W_]
für eine 3-Byte-Einsparung arbeiten ?/^[^\W_]{0,76}VEVO$/.test
oder so?PHP , 51 Bytes
-10 Bytes Dank an @Ismael Miguel für die Verwendung
<?=
anstelle von<?php echo
! und Entfernen des schließenden TagsProbieren Sie es online!
Vielen Dank für die anderen Antworten, damit ich den Regex nicht schreiben musste!
quelle
<?php echo
können Sie tun<?=preg_match("/^[^\W_]{0,76}VEVO$/",fgets(STDIN));
.[^\W_]
Verwenden Sie stattdessen auch einfach\w
das Gleiche wie[a-zA-Z_]
.APL (Dyalog) , 25 Bytes
Probieren Sie es online!
quelle
C (gcc) 83 Bytes
Probieren Sie es online!
quelle
return
Aussage, wie kommt das zurückc
? Undefiniertes Verhalten?Dyalog APL , 47 Bytes
Probieren Sie es online!
Eine reine Regex-Lösung hat 32 Bytes , ist aber auch viel langweiliger als dieser Ansatz.
quelle
⍣¯1
nachVEVO
dem dfn guard zu suchen und ihn zu benötigen, können Sie dies auch tun'VEVO'≡¯4↑⍵
. Das Bewegen von Dingen bringt mich auf die{('VEVO'≡¯4↑⍵)∧∧/⍵∊⎕D,⎕A,(819⌶)⎕A}
↑
. Es gibt aber auch andere bessere Möglichkeiten, diese Herausforderung zu bewältigen (z. B. Eriks Antwort), und ich mag diese Idee: pSchmutz , 13 Bytes
Probieren Sie es online!
Hier ist nichts Besonderes. Entspricht den
e
ntire Eingang mit dem Muster: höchstens 76 alphan
umeric Zeichen, gefolgt von der ZeichenfolgeVEVO
. Druckt1
für Übereinstimmung und0
für keine Übereinstimmung. Ich erinnerte mich, dass das letzte Zitat am Ende der Zeile entfernt werden konnte, aber anscheinend nur einen Analysefehler verursacht.quelle
C # (.NET Core) , 87 + 18 = 105 Byte
Probieren Sie es online!
quelle
a=>a.All(x=>char.IsLetterOrDigit(x)&x<123)&a.Length<81&a.EndsWith("VEVO")
nur ASCII-Buchstaben oder 67 + 18:a=>a.All(x=>char.IsLetterOrDigit(x))&a.Length<81&a.EndsWith("VEVO")
mit Unicode-Unterstützung> <> ,
147125 BytesProbieren Sie es online!
> <> 147 Bytes
Probieren Sie es online!
Dies gibt 1 aus, wenn die Eingabezeichenfolge gültig ist und nichts für eine ungültige Eingabe.
Bearbeiten 1: Die alphanumerischen Prüfungen wurden geändert, um Bereiche zu verwenden, anstatt sie mit jedem Zeichen zu vergleichen. (22 Bytes sparen)
quelle
Bash,
532630 BytesBeenden Sie den Code 0 für GÜLTIGE Ergebnisse und 1 für UNGÜLTIGE Ergebnisse.
Arbeitet immer noch an 80 Zeichen oder weniger.-27 Bytes beim Entfernen der Ausgabe dank @KeyWeeUsr
+4 Bytes, fester regulärer Ausdruck (wie alle anderen auch)
Probieren Sie es online!
quelle
echo 1
für wahr, oder einfach ohne Echo gehen. Es gibt keine Notwendigkeit zu Echo etwas , wie Sie noch mit einem Exit - Code am Ende , dass Sie tatsächlich überprüfen Sie mit&&
und||
> <> ,
10189838194 BytesBearbeiten:
Suche nach nicht-alphanumerischen Zeichen anstatt nach alphanumerischen Zeichen umgestellt.Zurückgeschaltet, weil ich vergessen habe, zwischen Z und a zu prüfen. Vielen Dank @Emigna. Rippen Sie diese verlorenen BytesEdit 2: Außerdem kann ich die total einfach loswerden. Vielen Dank, Teal Pelican dafür und finde das Problem mit TIO
Edit 3: ~~~ durch ap ersetzt
Ich weiß nicht, warum dies bei TIO nicht funktioniert, aber hier funktioniert es einwandfrei .Das Problem war, dass die {} Befehle in TIO für eine leere Liste nicht funktionieren. Probieren Sie es hierWie es funktioniert
Aus Gründen der Konsistenz ersetzen Sie die; In der letzten Zeile mit einem ungültigen Befehl wird jede Ausgabe zu einem Fehler.
quelle
C ++,
129105102 BytesDank anderer Antworten, die mir gezeigt haben, dass ich
dank Zacharý die Anzahl der Zeichen -2 Bytes zählen kann
TIO LINK
quelle
r
und nur den regulären Ausdruck innerhalb des Aufrufs habenstd::regex_match
?Gestapelt , 21 Bytes
Probieren Sie es online!
quelle
05AB1E , 21 Bytes
Probieren Sie es online!
quelle
Java (OpenJDK 8) ,
3736 BytesZiemlich einfache Antwort mit ein paar schönen Regex.
Wahrscheinlich die kürzeste Java-Antwort, die ich je gemacht habe.
-1 Bytes dank Neil in der Javascript-Antwort
Probieren Sie es online!
quelle
Retina , 18 Bytes
Probieren Sie es online!
oder
Probieren Sie es online!
quelle
Haskell , 75 Bytes
-2 Bytes dank user28667.
Probieren Sie es online!
quelle
drop(length s-4)
und extrahierenlength s
Deorst , 22 Bytes
Probieren Sie es online!
Benutzt einfach den von Shaggy gefundenen Regex
quelle
V , 17 Bytes
Probieren Sie es online!
Hexdump:
Komprimierte Regeln für den Sieg!
quelle
Ruby- n, 22 + 1 = 23 Bytes
Ausgabe
0
wenn wahr,nil
wenn falschProbieren Sie es online!
Mit dem gleichen langweiligen Regex wie alle anderen.
quelle
Swift 4 , 113 Bytes
Probieren Sie es online!
quelle
AWK , 23 Bytes
Probieren Sie es online!
Gibt den Kontonamen aus, wenn er gültig ist, und gibt nichts aus, wenn er ungültig ist
quelle
Sauber , 61 Bytes
Probieren Sie es online!
quelle
Perl 5 ,
3529 + 1 (-a) = 30 Bytes-6 Bytes dank ETHproductions
4 Bytes hinzugefügt. Ich habe nicht gesehen, dass ein Unterstrich nicht erlaubt ist.
Dies ist mein erstes Golf, also hoffe ich, dass ich es richtig gemacht habe.
Gibt 1 zurück, wenn dies gültig ist, und 0, wenn dies nicht der Fall ist.
Probieren Sie es online!
quelle
print/^\w{1,76}VEVO$/?1:0
+0
Konvertiert Übereinstimmungs-Bool in Zahl, anstatt?1:0
2 Bytes zu sparen. Mit-ple
Abzügen$_
für Sie telefonieren. Also:perl -ple '$_=/^[^\W_]{0,76}VEVO$/+0'
. 25 Bytes. Wenn Sie froh sind, Leerzeichen in nicht übereinstimmenden Zeilen zu erhalten,$_=/^[^\W_]{0,76}VEVO$/
sind dies 23 Byte.Google Sheets, 33 Bytes
Anonyme Arbeitsblattfunktion, die Eingaben aus dem Bereich
A1
und Ausgaben in die aufrufende Zelle übernimmtquelle
=RegexMatch(A1,"^[^\W_]{0,76}VEVO")
ohne Rückmeldung an den Benutzer und führt ausClojure , 146 Bytes
Probieren Sie es online!
Mit einer Regex wäre das viel kürzer, aber ich dachte, es wäre interessanter, es manuell zu machen.
quelle
ends-with?
Funktion wird nicht gefunden , obwohl dies Teil der Standardbibliothek ist.