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. eval
Anonim 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 i
var 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: