MATLAB, 63 41 40 38 36 Bytes
Vielen Dank an Tom Carpenter für das Abschneiden von 1 Byte!
Vielen Dank an Stewie Griffin für das Abschneiden von 2 Bytes!
@(x)nnz(x(+~strcmp('google',x):end))
Im Gegensatz zu den anderen eleganteren Lösungen führt das Durchführen einer Division durch Null in MATLAB nicht zu einem Fehler, sondern zu einer Abweichung Inf
. Diese Lösung ermittelt die Länge der Zeichenkette nach nnz
. Die erzeugte Zeichenfolge wird so erstellt, dass Sie vom Anfang der Zeichenfolge bis zum Ende indexieren. Dies ist im Wesentlichen eine Kopie der Zeichenfolge. Wichtig ist jedoch, dass der Anfang des Zugriffs auf die Zeichenfolge erstellt wird, indem überprüft wird, ob die Eingabe gleich ist oder nicht 'google'
. Wenn dies nicht der Fall ist, wird ein Anfangsindex von 1 erzeugt, und wir indizieren in der Regel in den String ... wenn MATLAB mit der Indizierung bei 1 beginnt. Wenn der Index gleich ist, wird 0 erzeugt und MATLAB gibt einen Indizierungsfehler aus, der besagt, dass index muss eine positive ganze Zahl sein. Das Extra+
soll sicherstellen, dass die Ausgabe der Gleichheitsprüfung numerisch und nicht boolesch ist logical
. Wenn Sie das weglassen, +
wird eine Warnung ausgegeben. Da die Spezifikationen dieser Herausforderung jedoch keine Warnungen zulassen, +
ist das erforderlich. Vervollständigen Sie den Code.
Beispiel verwendet
>> 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))
Eine spaßigere Version, 83 77 76 74 72 Bytes
Vielen Dank an Tom Carpenter für das Abschneiden von 1 Byte!
Vielen Dank an Stewie Griffin für das Abschneiden von 2 Bytes!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
Das oben Gesagte ist keine offizielle Einreichung, aber es macht ein bisschen mehr Spaß, es auszuführen. Wenn eval
der Code in anonymen Funktionen missbraucht wird, wird geprüft, ob die Eingabezeichenfolge 'google'
... entspricht. Wenn dies der Fall ist, wird der integrierte Webbrowser von MATLAB geöffnet und die 404-Fehlerseite von Google wird angezeigt, die versucht, auf die zuzugreifen Unterseite befindet sich bei, i
wenn das nicht existiert. Wenn nicht, zeigen wir die Länge der Zeichenkette normal an.
Beispiel verwendet
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
Der letzte Anruf mit 'google'
gibt uns diesen Bildschirm: