MATLAB, 63 41 40 38 36 bayt
1 byte'ı tıraş ettiğin için Tom Carpenter'a teşekkürler!
Stewie Griffin'e 2 byte'ı tıraş ettiğin için teşekkürler!
@(x)nnz(x(+~strcmp('google',x):end))
Diğer daha zarif çözümlerin aksine, MATLAB'da sıfıra bölerek işlem yapmak hata vermeyecek, aksine Inf. Bu çözüm dizenin uzunluğunu bulur nnz. Üretilen dize, dizenin başından sonuna kadar indeksleyeceğiniz şekildedir, bu temel olarak dizenin bir kopyasıdır. Bununla birlikte, önemli olan, dizeye erişilecek yerin başlangıcının girdinin eşit olup olmadığını kontrol ederek üretilmesidir 'google'. Olmazsa, bu 1'in başlangıç indeksini üretir ve normalde dizgiye indeksleriz ... MATLAB 1'de indekslemeye başlar. Eşit olursa, üretilen indeks 0'dır ve MATLAB indeksleme hatası atacağını belirtir. endeks pozitif bir tamsayı olmalıdır. Ekstra+eşitlik kontrolünün çıktısının Boolean / 'dan ziyade sayısal olmasını sağlamaktır logical. İsteği atlamak +bir uyarı üretecektir, ancak bu zorluğun özellikleri uyarılara izin vermediğinden +, gerekli olan ... kodun tamamlanması.
Örnek kullanımlar
>> 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))
Daha eğlenceli bir versiyon, 83 77 76 74 72 bytes
1 byte'ı tıraş ettiğin için Tom Carpenter'a teşekkürler!
Stewie Griffin'e 2 byte'ı tıraş ettiğin için teşekkürler!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
Yukarıdakiler resmi bir sunum değil, fakat çalıştırılması biraz daha eğlenceli bir şey. evalAnonim işlevler kötüye kullanıldığında , kodun yaptığı şey, giriş dizesinin eşit olup olmadığını kontrol etmektir 'google'... ve öyleyse, bu MATLAB'ın yerleşik web tarayıcısını açar ve Google'ın 404 hata sayfasını erişmeye çalışırken gösterir ivar olmadığı zaman bulunan alt sayfa . Değilse, normal olarak dizenin uzunluğunu gösteririz.
Örnek kullanımlar
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
Son kullanılan çağrı 'google'bize şu ekranı verir:
