Esse desafio é escrever um programa ou script que conte a soma de todos os dígitos dentro dos números inteiros, de 1 até e incluindo um determinado número.
Entrada, um número inteiro positivo. Saída, a soma dos dígitos nesse número e todos os números menores.
Exemplos:
Input: 5
Integer Sequence: 1, 2, 3, 4, 5
Sum of Digits: 1 + 2 + 3 +4 + 5 = 15
Input: 12
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Sum of Digits: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 + 1 + 1 + 1 + 2 = 51
Para ficar claro, isso é contar uma soma dos dígitos - não dos números inteiros. Para entradas de um dígito, será o mesmo. No entanto, entradas maiores que 10 terão respostas diferentes. Esta seria uma resposta incorreta :
Input: 12
Output: 78
Outro exemplo, para mostrar a diferença:
Input: 10
Integer Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Sum of Integers (INCORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
Digit Sequence: 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0
Sum of Digits (CORRECT RESPONSE): 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 1 + 0 = 46
Um caso de teste maior (RESPOSTA CORRETA):
Input: 1000000
Output: 27000001
Regras e Diretrizes:
- O código enviado deve ser um programa ou script completo - não apenas uma função. Se o código exigir inclusões, importações, etc., eles deverão ser incluídos no código publicado.
- O número deve ser inserido pelo usuário - não codificado. A entrada pode ser recebida como argumento da linha de comando, arquivo, stdin ou qualquer outro meio pelo qual seu idioma possa receber a entrada do usuário.
- O código deve ser capaz de manipular adequadamente as entradas pelo menos até
(2^64)-1
. - O código deve gerar apenas a soma.
- Os programas e scripts enviados devem ser fáceis de usar e não desperdiçar recursos de computador (por exemplo: eles não devem declarar matrizes incrivelmente grandes para conter todos os caracteres). Não há bônus ou penalidade estrita para isso, mas seja um bom programador.
Pontuação:
O mecanismo de pontuação principal é pelo tamanho do código. Pontuações mais baixas são melhores. Os seguintes bônus e penalidades também se aplicam:
- -25 Bônus se o seu código puder lidar com todos os números positivos, por exemplo:
1234567891234567891234564789087414984894900000000
- -50 Bônus se o seu código puder lidar com expressões simples, por exemplo
55*96-12
. Para se qualificar para esse bônus, o código deve manipular+ - / *
operadores (adição, subtração, divisão, multiplicação) e impor a ordem das operações. Divisão é divisão inteira regular.- O exemplo dado (
55*96-12
) é avaliado como5268
. Seu código deve retornar o mesmo para qualquer uma dessas entradas - a resposta correta é81393
.
- O exemplo dado (
- -10 Bônus se o seu código se qualifica para o bônus -50 e pode lidar com o
^
operador (expoente). - Bônus -100 se o seu código se qualifica para o bônus -50 e não usa
eval
ou similar para manipular expressões. - +300 de penalidade se o seu código depender de quaisquer recursos da web.
55*96-12
retornar?