MATLAB, 63 41 40 38 36 байт
Спасибо Тому Карпентеру за то, что он сбрил 1 байт!
Спасибо Stewie Griffin за то, что он сбрил 2 байта!
@(x)nnz(x(+~strcmp('google',x):end))
В отличие от других более элегантных решений, выполнение операции деления на ноль в MATLAB не приведет к ошибке, а скорее Inf. Это решение находит длину строки по nnz. Строка, которая создается таким образом, что вы индексируете от начала строки до конца, который по сути является копией строки. Тем не менее, важно то, что начало доступа к строке производится путем проверки того, равен или нет вход 'google'. Если это не так, это создает начальный индекс 1, и мы обычно индексируем в строку ... так как MATLAB начинает индексировать с 1. Если он равен, создается индекс 0, и MATLAB выдаст ошибку индексации, утверждая, что Индекс должен быть положительным целым числом. Экстра+чтобы убедиться, что выходные данные проверки равенства являются числовыми, а не логическими / logical. Пропуск +будет выдавать предупреждение, но поскольку спецификации этого вызова не допускают предупреждений, +требуется ... таким образом, завершается код.
Пример использования
>> 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))
Более веселая версия, 83 77 76 74 72 байта
Спасибо Тому Карпентеру за то, что он сбрил 1 байт!
Спасибо Stewie Griffin за то, что он сбрил 2 байта!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
Вышеуказанное не является официальным представлением, но в нем немного веселее. Злоупотребление evalвнутри анонимных функций, код выполняет то, что проверяет, равна ли входная строка'google' ... и если это так, то это открывает встроенный веб-браузер MATLAB и показывает страницу ошибки Google 404, пытающуюся получить доступ к подстраница, расположенная там, iгде ее нет. Если нет, мы отображаем длину строки как обычно.
Пример использования
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
Последнее использование вызова 'google'дает нам этот экран:
