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 eval
des fonctions anonymes, le code vérifie si la chaîne de saisie est égale à 'google'
... sous-page située à i
quand 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: