MATLAB, 63 41 40 38 36 octets
Merci à Tom Carpenter d’avoir supprimé 1 octet!
Merci à Stewie Griffin d'avoir réduit de 2 octets!
@(x)nnz(x(+~strcmp('google',x):end))
Contrairement aux autres solutions plus élégantes, effectuer une division par zéro dans MATLAB ne donnera pas une erreur, mais plutôt Inf. Cette solution trouve la longueur de la chaîne par nnz. La chaîne produite est telle que vous indexez du début à la fin de la chaîne, ce qui est essentiellement une copie de la chaîne. Cependant, l’important est que le début de l’accès à la chaîne soit généré en vérifiant si l’entrée est égale ou non 'google'. Si ce n'est pas le cas, cela produit un index de début égal à 1 et nous indexons normalement dans la chaîne ... car MATLAB commence à indexer à 1. S'il est égal, l'index produit est 0 et MATLAB émettra une erreur d'indexation indiquant que le index doit être un entier positif. L'extra+est de s'assurer que le résultat du contrôle d'égalité est numérique plutôt que booléen / logical. Omettre le +produira un avertissement, mais comme les spécifications de ce défi ne permettent pas les avertissements, le +est requis ... complétant ainsi le code.
Exemple d'utilisations
>> 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))
Une version plus amusante, 83 77 76 74 72 octets
Merci à Tom Carpenter d’avoir supprimé 1 octet!
Merci à Stewie Griffin d'avoir réduit de 2 octets!
@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end');
Ce qui précède n’est pas une candidature officielle, mais c’est quelque chose de plus amusant à exécuter. Utilisant abusivement evaldes fonctions anonymes, le code vérifie si la chaîne de saisie est égale à 'google'... sous-page située à iquand cela n'existe pas. Sinon, nous affichons la longueur de la chaîne normalement.
Exemple d'utilisations
>> f=@(x)eval('if strcmp(''google'',x),web([x ''.com/i'']);else nnz(x),end'); %// Declare anonymous function
>> f('bing')
ans =
4
>> f('google')
>>
Le dernier appel en utilisant 'google'nous donne cet écran:
