PHP (38 bytes):
Isso usa a mesma abordagem da minha resposta ES6
<?=count(split(1,decbin($_GET[n])))-1;
Este é um código completo, você só precisa colocá-lo em um arquivo e acessá-lo sobre o navegador, com o parâmetro n=<number>
.
PHP <4.2 (32 bytes):
Isso é um pouco mais curto:
<?=count(split(1,decbin($n)))-1;
Isso só funciona de maneira confiável no PHP <4.2, porque a diretiva register_globals
foi definida Off
por padrão do PHP4.2 até o PHP5.4 (que foi removido até então).
Se você criar um php.ini
arquivo com register_globals=On
, isso funcionará.
Para usar o código, acesse o arquivo usando um navegador, com POST ou GET.
Sugestão de @ViniciusMonteiro (38/45 bytes):
Ele deu duas sugestões muito boas que têm um uso muito interessante da função array_sum
:
38 bytes:
<?=array_sum(str_split(decbin(1337)));
45 bytes:
<?=array_sum(preg_split('//', decbin(1337)));
Essa é realmente uma ótima idéia e pode ser reduzida um pouco mais, para ter 36 bytes de comprimento:
<?=array_sum(split(1,decbin(1337)));