Este desafío es escribir un programa o script que cuente la suma de todos los dígitos dentro de los enteros desde 1 hasta e incluyendo un número dado.
Entrada, un entero positivo. Salida, la suma de dígitos en ese número y todos los números más pequeños.
Ejemplos:
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 ser claros, esto es contar una suma de los dígitos , no los enteros. Para entradas de un solo dígito, esto será lo mismo. Sin embargo, las entradas mayores de 10 tendrán respuestas diferentes. Esta sería una respuesta incorrecta :
Input: 12
Output: 78
Otro ejemplo, para mostrar la diferencia:
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
Un caso de prueba más grande (RESPUESTA CORRECTA):
Input: 1000000
Output: 27000001
Reglas y pautas:
- El código enviado debe ser un programa o script completo, no solo una función. Si el código requiere incluye, importaciones, etc., deben incluirse en el código publicado.
- El número debe ser ingresado por el usuario, no codificado. La entrada puede recibirse como un argumento de línea de comando, archivo, stdin o cualquier otro medio por el cual su idioma puede tomar la entrada del usuario.
- El código debe poder manejar correctamente las entradas al menos hasta
(2^64)-1
. - El código solo debería generar la suma.
- Los programas y scripts enviados deben ser fáciles de usar y no desperdiciar recursos informáticos (por ejemplo, no deben declarar matrices increíblemente grandes para contener cada carácter). No hay una bonificación o penalización estricta por esto, pero sean buenos programadores.
Tanteo:
El mecanismo de puntuación principal es por longitud de código. Los puntajes más bajos son mejores. También se aplican las siguientes bonificaciones y sanciones:
- -25 Bonificación si su código puede manejar todos los números positivos, por ejemplo:
1234567891234567891234564789087414984894900000000
- -50 Bonificación si su código puede manejar expresiones simples, por ejemplo
55*96-12
. Para calificar para este bono, el código debe manejar+ - / *
(suma, resta, división, multiplicación) operadores y hacer cumplir el orden de las operaciones. La división es una división entera regular.- El ejemplo dado (
55*96-12
) se evalúa como5268
. Su código debe devolver lo mismo para cualquiera de esas entradas: la respuesta correcta es81393
.
- El ejemplo dado (
- -10 Bonificación si su código califica para la bonificación -50 y puede manejar el
^
operador (exponente). - -100 de bonificación si su código califica para la bonificación de -50 y no utiliza
eval
o similar para manejar expresiones. - +300 Penalización si su código se basa en cualquier recurso web.
55*96-12
volver?