MATLAB, 63 41 40 38 36 byte
Terima kasih kepada Tom Carpenter karena telah menghemat 1 byte!
Terima kasih kepada Stewie Griffin karena mencukur 2 byte!
@(x)nnz(x(+~strcmp('google',x):end))
Berbeda dengan solusi lain yang lebih elegan, melakukan operasi pembagian dengan nol di MATLAB tidak akan memberikan kesalahan, melainkan Inf
. Solusi ini menemukan panjang string nnz
. String yang dihasilkan sedemikian rupa sehingga Anda mengindeks dari awal string ke akhir, yang pada dasarnya adalah salinan dari string. Namun, yang penting adalah bahwa awal dari mana mengakses string dihasilkan dengan memeriksa apakah input sama atau tidak 'google'
. Jika tidak, ini menghasilkan indeks awal 1 dan kami indeks ke dalam string secara normal ... karena MATLAB mulai mengindeks pada 1. Jika sama, indeks yang dihasilkan adalah 0 dan MATLAB akan melempar kesalahan pengindeksan yang menyatakan bahwa indeks harus bilangan bulat positif. Ekstra+
adalah untuk memastikan bahwa output dari pemeriksaan kesetaraan adalah numerik daripada Boolean / logical
. Menghilangkan +
kehendak akan menghasilkan peringatan, tetapi karena spesifikasi tantangan ini tidak memungkinkan untuk peringatan, +
diperlukan ... dengan demikian melengkapi kode.
Penggunaan contoh
>> f=@(x)nnz(x(+~strcmp('google',x):end)) %// Declare anonymous function
f =
@(x)nnz(x(+~strcmp('google',x):end))
>> f('bing')
ans =
4
>> f('google')
Subscript indices must either be real positive integers or logicals.
Error in @(x)nnz(x(+~strcmp('google',x):end))
Versi yang lebih menyenangkan, 83 77 76 74 72 byte
Terima kasih kepada Tom Carpenter karena telah menghemat 1 byte!
Terima kasih kepada Stewie Griffin karena mencukur 2 byte!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
Di atas bukan pengajuan resmi, tapi itu sesuatu yang sedikit lebih menyenangkan untuk dijalankan. Menyalahgunakan eval
dalam fungsi anonim, yang dilakukan kode adalah memeriksa untuk melihat apakah string input sama dengan 'google'
... dan jika ya, ini akan membuka browser web bawaan MATLAB dan menunjukkan halaman kesalahan 404 Google yang mencoba mengakses Subhalaman terletak pada i
saat itu tidak ada. Jika tidak, kami menampilkan panjang string secara normal.
Penggunaan contoh
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
Panggilan terakhir menggunakan 'google'
memberi kita layar ini: