MATLAB, 63 41 40 38 36 byte
Grazie a Tom Carpenter per la rasatura di 1 byte!
Grazie a Stewie Griffin per la rasatura di 2 byte!
@(x)nnz(x(+~strcmp('google',x):end))
A differenza delle altre soluzioni più eleganti, eseguire una divisione per operazione zero in MATLAB non darà un errore, ma piuttosto Inf. Questa soluzione trova la lunghezza della stringa di nnz. La stringa prodotta è in modo tale da indicizzare dall'inizio della stringa fino alla fine, che è essenzialmente una copia della stringa. Tuttavia, ciò che è importante è che l'inizio di dove accedere alla stringa sia prodotto verificando se l'input è uguale o meno 'google'. In caso contrario, questo produce un indice iniziale di 1 e indicizziamo normalmente la stringa ... poiché MATLAB inizia a indicizzare su 1. Se è uguale, l'indice prodotto è 0 e MATLAB genererà un errore di indicizzazione affermando che il L'indice deve essere un numero intero positivo. Il extra+è garantire che l'output del controllo di uguaglianza sia numerico anziché booleano / logical. Se si omette, +verrà generato un avviso, ma poiché le specifiche di questa sfida non consentono avvisi, +è necessario ... completando così il codice.
L'esempio usa
>> 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))
Una versione più divertente, 83 77 76 74 72 byte
Grazie a Tom Carpenter per la rasatura di 1 byte!
Grazie a Stewie Griffin per la rasatura di 2 byte!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
Quanto sopra non è una presentazione ufficiale, ma è qualcosa che è un po 'più divertente da eseguire. Abusando evaldi funzioni anonime, ciò che il codice fa è che controlla se la stringa di input è uguale a 'google'... e se lo è, questo aprirà il browser web integrato di MATLAB e mostrerà la pagina di errore 404 di Google che prova ad accedere al sottopagina situata in iquando non esiste. In caso contrario, visualizziamo normalmente la lunghezza della stringa.
L'esempio usa
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
L'ultima chiamata usando 'google'ci dà questa schermata:
