PHP (38 octets):
Cela utilise la même approche que ma réponse ES6
<?=count(split(1,decbin($_GET[n])))-1;
Il s'agit d'un code complet, il vous suffit de le mettre dans un fichier et d'y accéder via le navigateur, avec le paramètre n=<number>
.
PHP <4,2 (32 octets):
C'est un peu plus court:
<?=count(split(1,decbin($n)))-1;
Cela ne fonctionne que de manière fiable sur PHP <4.2 car la directive a register_globals
été définie Off
par défaut de PHP4.2 à PHP5.4 (qui a été supprimée d'ici là).
Si vous créez un php.ini
fichier avec register_globals=On
, cela fonctionnera.
Pour utiliser le code, accédez au fichier à l'aide d'un navigateur, avec POST ou GET.
Il a donné 2 très bonnes suggestions qui ont une utilisation très intéressante de la fonction array_sum
:
38 octets:
<?=array_sum(str_split(decbin(1337)));
45 octets:
<?=array_sum(preg_split('//', decbin(1337)));
C'est une très bonne idée et peut être raccourcie un peu plus, pour une longueur de 36 octets:
<?=array_sum(split(1,decbin(1337)));