Wyzwanie polega na napisaniu programu lub skryptu, który zlicza sumę wszystkich cyfr w liczbach całkowitych od 1 do podanej liczby włącznie.
Wejście, jedna dodatnia liczba całkowita. Dane wyjściowe, suma cyfr w tej liczbie i wszystkie mniejsze liczby.
Przykłady:
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
Żeby było jasne, należy policzyć sumę cyfr - nie liczb całkowitych. W przypadku danych jednocyfrowych będzie to samo. Jednak dane wejściowe większe niż 10 będą miały różne odpowiedzi. To byłaby niepoprawna odpowiedź:
Input: 12
Output: 78
Kolejny przykład, aby pokazać różnicę:
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
Większy przypadek testowy (PRAWIDŁOWA REAKCJA):
Input: 1000000
Output: 27000001
Zasady i wytyczne:
- Przesłany kod musi być kompletnym programem lub skryptem, a nie tylko funkcją. Jeśli kod wymaga uwzględnienia, importu itp., Należy je uwzględnić w opublikowanym kodzie.
- Numer musi być wprowadzony przez użytkownika - nie zakodowany na stałe. Dane wejściowe mogą być odbierane jako argument wiersza polecenia, plik, standardowe wejście lub dowolny inny sposób, za pomocą którego Twój język może przyjmować dane wprowadzone przez użytkownika.
- Kod musi być w stanie poprawnie obsługiwać dane wejściowe przynajmniej do
(2^64)-1
. - Kod powinien wypisywać tylko sumę.
- Przesłane programy i skrypty powinny być przyjazne dla użytkownika i nie marnować zasobów komputerowych (np .: nie powinny zadeklarować niesamowicie dużych tablic, w których zmieści się każda postać). Nie ma za to ścisłej premii ani kary, ale bądźcie dobrymi programistami.
Punktacja:
Podstawowym mechanizmem oceniania jest długość kodu. Niższe wyniki są lepsze. Obowiązują również następujące premie i kary:
- -25 Bonus, jeśli Twój kod obsługuje wszystkie liczby dodatnie, na przykład:
1234567891234567891234564789087414984894900000000
- -50 Premia, jeśli Twój kod obsługuje na przykład proste wyrażenia
55*96-12
. Aby kwalifikować się do tej premii, kod powinien obsługiwać+ - / *
(dodawanie, odejmowanie, dzielenie, mnożenie) operatorów i egzekwować kolejność operacji. Podział to zwykły podział na liczby całkowite.- Podany przykład (
55*96-12
) ma wartość5268
. Twój kod powinien zwrócić to samo dla każdego z tych danych wejściowych - poprawna odpowiedź to81393
.
- Podany przykład (
- Bonus -10, jeśli twój kod kwalifikuje się do premii -50 i może obsłużyć
^
operatora (wykładnik). - Bonus -100, jeśli twój kod kwalifikuje się do premii -50 i nie używa
eval
ani nie obsługuje podobnych wyrażeń. - +300 Kara, jeśli twój kod opiera się na jakichkolwiek zasobach sieciowych.
55*96-12
wrócić?