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 eval
di 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 i
quando 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: