Tugas Anda adalah menulis program atau fungsi yang menentukan apakah suatu angka dapat dibagi oleh yang lain. Tangkapannya adalah bahwa ia harus memberikan jawaban sesegera mungkin , bahkan jika tidak semua angka angka telah diberikan.
Program Anda harus mengambil bilangan bulat D ≥ 2 dan kemudian serangkaian digit sebagai input. Ini mewakili digit bilangan bulat lain N ≥ 1, mulai dari angka paling tidak signifikan. Pada titik pertama yang N baik harus atau harus tidak menjadi divisble oleh D , program anda harus output jawaban yang tepat dan keluar. Jika akhir input tercapai, seharusnya keluaran apakah penuh N habis dibagi D .
Berikut adalah daftar format input yang dapat diterima untuk N (tinggalkan komentar jika Anda berpikir sesuatu yang tidak termasuk harus diizinkan):
Input standar : digit diberikan pada garis yang berbeda; akhir input adalah EOF atau nilai khusus; keluar berarti bahwa fungsi kembali atau program keluar.
Input analog : melalui mis. Penekanan tombol atau sepuluh tombol yang mewakili setiap digit; akhir input adalah nilai khusus; keluar berarti bahwa fungsi kembali atau program keluar.
Fungsi dengan negara global : dipanggil berulang kali dengan digit berturut-turut; akhir input adalah nilai khusus; keluar berarti bahwa fungsi mengembalikan nilai yang bukan nol. Perhatikan bahwa jika Anda menggunakan keadaan global, itu harus dihapus setelah nilai dikembalikan atau direset sedemikian rupa sehingga fungsi tersebut berfungsi beberapa kali .
Fungsi Curried : mengembalikan fungsi lain untuk dipanggil dengan digit berikutnya atau nilai; akhir input adalah nilai khusus atau memanggil fungsi tanpa argumen; keluar berarti bahwa fungsi mengembalikan jawaban daripada fungsi lain.
GUI prompt atau serupa : ditampilkan berulang kali; akhir input adalah "batal" atau setara, atau nilai khusus; keluar berarti meminta agar berhenti muncul.
Fungsi Iterator : input adalah objek atau fungsi stateful yang mengembalikan digit berikutnya ketika dipanggil, akhir input adalah pengecualian atau nilai khusus; keluar berarti iterator berhenti dipanggil.
Input untuk D dan output dapat melalui metode standar yang dapat diterima .
Kasus uji:
2; 6 => true
5; 6 => false
20; 0 3 => false
20; 0 4 => true
100; 1 => false
100; 0 0 => true
100; 0 2 => false
4; 2 4 => false
4; 2 5 => true
4; 2 [eof] => false
4; 4 [eof] => true
625; 5 5 => false
625; 5 7 2 => false
625; 5 7 3 6 => false
625; 5 7 3 4 => true
7; 9 3 4 [eof] => false
7; 9 3 4 5 [eof] => true
140; 0 3 => false
140; 0 4 5 [eof] => false
140; 0 4 5 1 [eof] => true
14; 4 5 1 4 [eof] => false
14; 4 5 1 4 1 [eof] => true
sumber
digits
input dengan nilai khusus untuk EOF?[]
dan[2]
kembali apa pun selainfalse
atautrue
(termasuk fungsi itu sendiri dll ...) sementara[2,3]
,[2,3,1]
dan[2,3,1,EOF]
kembalitrue
. Itu membuat saya sangat dekat dengan pilihan negara global.Jawaban:
JavaScript (ES6), 70 byte
Format input: Fungsi Kari
Cobalah online!
Bagaimana?
Berkomentar
sumber
Batch,
177169 byteDibawa
d
sebagai parameter baris perintah dan membaca angkan
pada baris terpisah dengan-
sebagai penanda EOF. Output1
untuk habis dibagi,0
jika tidak. Penjelasan:Menginisialisasi
n
ke string kosong.g
adalahgcd(d, 10**len(n))
Mulailah satu digit pembacaan lingkaran.
Baca digit selanjutnya.
Hentikan pemrosesan di EOF.
Tambahkan angka berikutnya ke
n
.Perbarui
g
sekarang yanglen(n)
telah meningkat dan menghitungn%g
.Jika
r
bukan nol makad
pasti tidak membagin
, karenag
, faktord
, tidak. Jikar
nol maka kita hanya tahu apakahd
membagin
jikag
samad
, jadi jika tidak, lanjutkan loop.Keluar dari loop pembacaan digit di sini di EOF.
Hitung dan hasilkan secara implisit hasilnya.
sumber