Diberikan bilangan bulat N
, N
hasilkan angka positif th K
dengan properti berikut dalam basis desimal:
Untuk setiap digit I
pada posisi P
dari K
, jumlah terbentuk dari K
dengan menghapus P
digit th (yaitu I
) habis dibagi I
.
Contoh dan komentar
324
adalah nomor seperti itu:
3
membagi24
2
membagi34
4
membagi32
Catatan 1: kami berasumsi bahwa angka kosong dapat dibagi oleh apa pun, misalnya 0
. Oleh karena itu 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
dan 9
berlaku.
Catatan 2: K
tidak dapat berisi angka 0
, karena Anda tidak dapat membaginya dengan 0
.
Masukan dan keluaran
- Anda dapat mengambil input sebagai argumen fungsi, melalui
STDIN
, dll. - Anda dapat mengembalikan output dari suatu fungsi, melalui
STDOUT
, dll. - Anda dapat mengindeks angka-angka itu mulai dari
0
(dalam hal iniN >= 0
) atau dari1
(dalam hal iniN > 0
), mana yang lebih cocok untuk Anda.
Uji kasus
Contoh-contoh itu diindeks dari 0
, jadi jika Anda diindeks dari 1
, lalu tambahkan 1
ke angka di N
kolom.
N Output
0 1
4 5
8 9
15 77
16 88
23 155
42 742
47 1113
121 4244
144 6888
164 9999
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
code-golf
number
arithmetic
integer
Fatalisasi
sumber
sumber
10000
nomor excludivisible .100000
(1e5
) angka yang tidak terlihat .Jawaban:
Jelly ,
2119 byteInput diindeks 1. Cobalah online!
Bagaimana itu bekerja
sumber
Pyth, 20
Cobalah di sini atau jalankan Test Suite
N diindeks 1 untuk jawaban ini.
Sebagian besar menggunakan logika yang sama dengan skrip python saya. Perbedaan penting digunakan
.D
untuk menghapus digit dari string selama pengujian dan menggunakan penanganan pengecualian untuk menangani nol digit.sumber
Pyth, 26 byte
Suite uji.
sumber
Python 2, 93 byte
Sangat tidak efisien. Input diindeks 1. Cobalah Ideone .
Versi alternatif, 100 byte
Kode di atas melakukan kira-kira 10 x tes keterbagian di mana hanya x yang diperlukan. Pada biaya hanya 7 byte ekstra , efisiensi dapat ditingkatkan secara dramatis, baik dengan mengganti
*r
dengan*len(`r`)
atau dengan refactoring kode sebagai berikut.Ini menangani semua kasus uji dengan mudah, bahkan pada Ideone .
sumber
JavaScript (ES6),
827876 byteInput diindeks 1. Bekerja dengan membangun string formulir
false|'24'%3|'34'%2|'32'%4
dan mengevaluasinya. String digunakan karena mereka masih berlaku secara sintaksis dalam kasus satu digit.Rekursi membatasi ini menjadi sekitar n = 119. Versi berulang untuk
888482 byte:Sunting: Disimpan 2 byte berkat @ Dennis ♦.
sumber
"|'$`$''%$&"
menghemat dua byte.Ruby, 90
Pendekatan yang mirip dengan jawaban Javascript Neil, tetapi secara signifikan lebih lama karena kurangnya konversi tipe implisit (kecuali bahwa boolean dapat dikonversi menjadi string oleh
gsub
, yang bagus).sumber
Ruby, 109 byte
sumber
Hoon , 246 byte
Tidak Disatukan:
Ini ... sangat mengerikan. Saya merasa kotor karena memposting ini.
Setel
k
ke bentuk string dari angka saat ini, petakan daftar yang[0...(length k)-1]
memisahkan string pada indeks itu (a
). Dapatkana
karakter, parsing ke angka, dan jika itu0
mengembalikan no. Dapatkan awalana
dan las ke bagian lain dari perpecahan, parsing ke angka, periksa apakah indeks membaginya secara merata.++levy
mengembalikan yes iff memanggil fungsi pada semua elemen dari daftar juga ya. Dalam hal ini, fungsi++test
dilengkungkan dengan ya, jadi memeriksa bahwa semua karakter dalamk
pekerjaan.Jika kita pada nilai 0, kita kembalikan angka saat ini, atau kita kambuh dengan n yang dikurangi (dan bertambah
x
)sumber