Kami sering melihat video musik di Youtube. Banyak saluran Youtube yang meng-host video musik "didukung oleh VEVO". Itu dapat dengan mudah diidentifikasi dengan menyematkan VEVO di thumbnail video mereka dan menambahkan VEVO ke nama saluran mereka.
Sekarang tulis beberapa kode untuk menguji apakah string yang diberikan oleh pengguna adalah akun pengguna VEVO atau tidak.
Persyaratan untuk string akun pengguna VEVO yang valid:
Harus hanya berisi karakter huruf besar, huruf kecil, dan digit. (tidak ada spasi atau tanda baca)
Panjangnya tidak boleh lebih dari 80 karakter.
Harus memiliki "VEVO" substring di akhir string
Kasus uji:
Input yang valid:
AdeleVEVO
ConnieTalbotVEVO
SHMVEVO
justimberlakeVEVO
DJMartinJensenVEVO
test123VEVO
Input tidak valid:
syam kapuk
jypentertainment
Noche de Brujas
testVEVO123
Tentu saja, karena ini adalah kode-golf , saya mencari kode terpendek menggunakan bahasa pemrograman apa pun.
sumber
VEVO
andūņīčōdēVEVO
test123VeVo
dan satu dengan lebih dari 80 karakterạ
danẠ
dan digit dalam huruf lain, misalnya九
(9)Jawaban:
Python 2 , 45 byte
-3 byte terima kasih kepada Rod. -2 bytes terima kasih kepada ovs.
Cobalah online!
Solusi regex ternyata lebih lama.
sumber
Japt v2.0a0,
2016 bytePengembalian
1
untuk yang valid atau0
tidak valid.[\l\d]
juga akan bekerja di tempat[^\W_]
untuk jumlah byte yang sama.Cobalah | Periksa semua test case
Penjelasan :
è
menghitung jumlah kecocokan RegEx dalam input. Di Japt,\w
kelas RegEx tidak termasuk garis bawah.sumber
;¥oB+mc)¯80 ©"VEVO"¥Ut4n
B+mc
:) Omong-omong, jika Japt2 memiliki kelas karakter untuk[A-Za-z0-9]
, kita bisa mengalahkan Retina di sini! Bahkan mungkin layak diganti\w
&\W
.JavaScript (ES6),
27363431 byteDisimpan 2 byte berkat @Neil dan 3 byte berkat @Shaggy
Uji kasus
Tampilkan cuplikan kode
sumber
\w
cocok_
dengan juga?((?!_)\w)
menghemat 2 byte.[^\W_]
bekerja untuk penghematan 3 byte ?/^[^\W_]{0,76}VEVO$/.test
atau apalah?PHP , 51 byte
-10 byte berkat @Ismael Miguel untuk menggunakan
<?=
bukan<?php echo
! dan menghapus tag penutupCobalah online!
Terima kasih atas jawaban lain jadi saya tidak perlu menulis regex!
sumber
<?php echo
, Anda bisa melakukannya<?=preg_match("/^[^\W_]{0,76}VEVO$/",fgets(STDIN));
.[^\W_]
, gunakan saja\w
, yang sama dengan[a-zA-Z_]
.APL (Dyalog) , 25 byte
Cobalah online!
sumber
C (gcc) , 83 byte
Cobalah online!
sumber
return
pernyataan, bagaimana ini kembalic
? Perilaku tidak terdefinisi?Dyalog APL , 47 byte
Cobalah online!
Solusi regex murni adalah 32 byte , tetapi juga jauh lebih membosankan daripada pendekatan ini.
sumber
⍣¯1
untuk memeriksaVEVO
dan membutuhkan penjaga dfn, Anda dapat melakukannya'VEVO'≡¯4↑⍵
. Memindahkan hal-hal sedikit membuat saya{('VEVO'≡¯4↑⍵)∧∧/⍵∊⎕D,⎕A,(819⌶)⎕A}
↑
.. Namun ada cara lain yang lebih baik untuk melakukan tantangan ini (yaitu jawaban Eriks) dan saya menyukai ide ini: pGrime , 13 byte
Cobalah online!
Tidak ada yang mewah di sini. Cocokkan
e
input ntire dengan pola: paling banyak 76n
karakter alfa umerik, diikuti oleh stringVEVO
. Mencetak1
untuk pertandingan dan0
tanpa pertandingan. Saya ingat bahwa kutipan terakhir dapat dihapus di akhir baris, tetapi ternyata itu hanya menyebabkan kesalahan parse.sumber
C # (.NET Core) , 87 + 18 = 105 byte
Cobalah online!
sumber
a=>a.All(x=>char.IsLetterOrDigit(x)&x<123)&a.Length<81&a.EndsWith("VEVO")
hanya surat ASCII atau 67 + 18:a=>a.All(x=>char.IsLetterOrDigit(x))&a.Length<81&a.EndsWith("VEVO")
dengan dukungan unicode> <> ,
147125 byteCobalah online!
> <> , 147 byte
Cobalah online!
Ini mencetak 1 jika string input valid dan tidak ada untuk input yang tidak valid.
Sunting 1: Mengubah pemeriksaan alfanumerik untuk menggunakan rentang daripada membandingkan setiap karakter. (hemat 22 byte)
sumber
Bash,
532630 byteKeluar kode 0 untuk hasil VALID dan 1 untuk hasil INVALID.
Masih bekerja pada 80 karakter atau kurang.-27 byte dari menghapus output, terima kasih kepada @KeyWeeUsr
+4 byte, regex tetap (sama seperti orang lain)
Cobalah online!
sumber
echo 1
benar, atau hanya pergi tanpa gema. Tidak perlu mengulang apa pun karena Anda masih memiliki kode keluar yang benar-benar Anda periksa&&
dan gunakan||
> <> ,
10189838194 byteSunting:
Beralih ke memeriksa untuk karakter non-alfanumerik daripada alfanumerik.Beralih kembali karena saya lupa memeriksa antara Z dan a. Terima kasih @ Emigna. Robek byte yang hilang ituSunting 2: Juga, saya benar-benar bisa menyingkirkan itu}}}}. Terima kasih Teal pelican untuk itu dan menemukan masalah dengan TIO
Sunting 3: diganti ~~~ dengan ap
Saya tidak tahu mengapa ini tidak bekerja pada TIO, tetapi berfungsi dengan baik di sini .Masalahnya adalah bahwa perintah {} di TIO tidak berfungsi untuk daftar kosong. Coba Di SiniBagaimana itu bekerja
Untuk konsistensi, mengganti; di baris terakhir dengan instruksi yang tidak valid membuat setiap output menjadi kesalahan.
sumber
C ++,
129105102 byteBerkat jawaban lain yang menunjukkan kepada saya bahwa saya dapat menghitung jumlah karakter
-2 byte, berkat Zacharý
TIO LINK
sumber
r
, dan hanya memiliki regex di dalam panggilan itustd::regex_match
?Ditumpuk , 21 byte
Cobalah online!
sumber
05AB1E , 21 byte
Cobalah online!
sumber
Java (OpenJDK 8) ,
3736 byteJawaban yang cukup sederhana menggunakan beberapa regex yang indah.
Sangat mungkin jawaban Java terpendek yang pernah saya lakukan.
-1 byte, terima kasih kepada Neil pada jawaban Javascript
Cobalah online!
sumber
Retina , 18 byte
Cobalah online!
atau
Cobalah online!
sumber
Haskell , 75 byte
-2 byte terima kasih ke user28667.
Cobalah online!
sumber
drop(length s-4)
dan mengekstraklength s
Deorst , 22 byte
Cobalah online!
Cukup gunakan regex yang ditemukan oleh Shaggy
sumber
V , 17 byte
Cobalah online!
Hexdump:
Regex terkompresi untuk kemenangan!
sumber
Ruby -n, 22 + 1 = 23 byte
Keluaran
0
jika benar,nil
jika salahCobalah online!
Menggunakan regex membosankan yang sama seperti orang lain.
sumber
Swift 4 , 113 byte
Cobalah online!
sumber
AWK , 23 byte
Cobalah online!
Output nama akun jika valid, dan tidak menghasilkan apa-apa jika tidak valid
sumber
Bersih , 61 byte
Cobalah online!
sumber
Perl 5 ,
3529 + 1 (-a) = 30 byte-6 byte berkat ETHproductions
Menambahkan 4 byte. Tidak melihat garis bawah tidak diizinkan.
Ini golf pertama saya, jadi inilah harapan saya melakukannya dengan benar.
Mengembalikan 1 jika valid, 0 jika tidak.
Cobalah online!
sumber
print/^\w{1,76}VEVO$/?1:0
+0
mengubah bool cocok menjadi angka, bukan?1:0
, menghemat 2 byte. Memanggil dengan-ple
cetakan$_
untuk Anda. Jadi:perl -ple '$_=/^[^\W_]{0,76}VEVO$/+0'
. 25 byte. Jika Anda senang mendapatkan kosong pada baris yang tidak cocok,$_=/^[^\W_]{0,76}VEVO$/
adalah 23 byte.Google Sheets, 33 Bytes
Fungsi lembar kerja anonim yang mengambil input dari jangkauan
A1
dan keluaran ke sel panggilansumber
=RegexMatch(A1,"^[^\W_]{0,76}VEVO")
tanpa umpan balik kepada pengguna dan dijalankanClojure , 146 byte
Cobalah online!
Ini akan jauh lebih pendek menggunakan regex, tapi saya pikir melakukannya secara manual akan lebih menarik.
sumber
ends-with?
fungsinya, meskipun itu adalah bagian dari pustaka standar.