Tantangan ini adalah untuk menulis program atau skrip yang menghitung jumlah semua digit dalam bilangan bulat dari 1 hingga dan termasuk angka yang diberikan.
Input, satu bilangan bulat positif. Output, jumlah digit dalam angka itu dan semua angka yang lebih kecil.
Contoh:
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
Agar jelas, ini untuk menghitung jumlah digit - bukan bilangan bulat. Untuk input satu digit, ini akan sama. Namun, input yang lebih besar dari 10 akan memiliki respons yang berbeda. Ini akan menjadi respons yang salah :
Input: 12
Output: 78
Contoh lain, untuk menunjukkan perbedaan:
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
Kasus uji yang lebih besar (TANGGAPAN YANG BENAR):
Input: 1000000
Output: 27000001
Aturan & Pedoman:
- Kode yang dikirim harus berupa program atau skrip yang lengkap - bukan hanya fungsi. Jika kode mengharuskan termasuk, impor, dll, mereka harus dimasukkan dalam kode yang diposting.
- Nomor tersebut harus dimasukkan oleh pengguna - bukan kode-keras. Input dapat diterima sebagai argumen baris perintah, file, stdin, atau cara lain yang dengannya bahasa Anda dapat mengambil input pengguna.
- Kode harus dapat menangani input dengan baik setidaknya hingga
(2^64)-1
. - Kode seharusnya hanya menampilkan jumlah.
- Program & skrip yang diajukan harus ramah pengguna dan tidak boros sumber daya komputer (mis.: Mereka tidak boleh mendeklarasikan array yang sangat besar untuk menampung setiap karakter). Tidak ada bonus atau penalti yang ketat untuk ini, tetapi harap menjadi pemrogram yang baik.
Mencetak:
Mekanisme penilaian utama adalah dengan panjang kode. Skor yang lebih rendah lebih baik. Bonus dan penalti berikut juga berlaku:
- -25 Bonus jika kode Anda dapat menangani semua angka positif, misalnya:
1234567891234567891234564789087414984894900000000
- -50 Bonus jika kode Anda dapat menangani ekspresi sederhana, misalnya
55*96-12
. Agar memenuhi syarat untuk bonus ini, kode harus menangani+ - / *
(penambahan, pengurangan, pembagian, penggandaan) operator dan menegakkan urutan operasi. Divisi adalah divisi integer reguler.- Contoh yang diberikan (
55*96-12
) dievaluasi menjadi5268
. Kode Anda harus mengembalikan yang sama untuk salah satu dari input tersebut - jawaban yang benar adalah81393
.
- Contoh yang diberikan (
- -10 Bonus jika kode Anda memenuhi syarat untuk bonus -50 dan dapat menangani
^
operator (eksponen). - -100 Bonus jika kode Anda memenuhi syarat untuk bonus -50 dan tidak menggunakan
eval
atau mirip untuk menangani ekspresi. - +300 Denda jika kode Anda bergantung pada sumber daya web apa pun.
55*96-12
dikembalikan?