Angka Harshad adalah angka yang dapat dibagi dengan jumlah digitnya. Ini jelas tergantung pada basis apa bilangan bulat ditulis. Basis 10 Nomor Harshad adalah urutan A005349 dalam OEIS.
Tugas Anda:
Tulis program atau fungsi yang menentukan apakah bilangan bulat yang diberikan adalah angka Harshad di basis yang diberikan.
Memasukkan:
Integer positif <10 ^ 9, dan basis antara 2 dan 36, OR, integer positif di dasarnya, menggunakan huruf kecil untuk angka dari 11-36 dan basis antara 2 dan 36. Anda hanya perlu menangani salah satu dari opsi ini.
Keluaran:
Nilai kebenaran / kepalsuan yang menunjukkan apakah input pertama adalah nomor Harshad di dasar input kedua.
Contoh:
27,10 ----------> truthy
8,5 ------------> truthy
9,5 ------------> falsy
1a,12 OR 22,12 -> truthy
Mencetak:
Ini adalah kode-golf , skor terendah dalam byte yang menang.
code-golf
number
decision-problem
Gryphon
sumber
sumber
Jawaban:
Jelly , 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
b
bertobat n ke dalam array dari basis-nya k digit, makaS
dibutuhkan jumlah nya.Python 2 , 46 byte
Cobalah online!
sumber
Python 3 , 73 byte
Cobalah online!
Saya benar, Anda tahu.
sumber
Dyalog APL, 20 byte
Cobalah online! [15 angka pertama dalam 15 basis pertama]
Membawa angka sebagai argumen kanan dan basis sebagai argumen kiri, 0 adalah benar.
Bagaimana?
⍺⊥⍣¯1⊢⍵
-⍵
di dasar⍺
sebagai daftar angka⍵|⍨
-⍵
modulo ...+/
- jumlahsumber
Python 2 ,
5447 byteKompleksitas waktu dan memori adalah O (n) , jadi jangan coba 10 9 pada TIO.
Output melalui kode keluar, jadi 0 benar, 1 salah. Jika metode keluaran ini diizinkan, byte lebih lanjut dapat disimpan dengan mengubah program menjadi suatu fungsi.
Terima kasih kepada @ musicman523 karena menyarankan kode keluar!
Cobalah online!
sumber
exit(n%s)
mana 0 benar dan yang lainnya salah?Pyth,
127 byteCobalah online!
Hitungan byte sekarang lebih rendah karena unary tidak lagi diperlukan.
Penjelasan
sumber
R ,
6460 byte(membutuhkan
pryr
paket)Ini adalah fungsi anonim yang mengambil dua argumen,
b
dann
yang mengevaluasi ke (yang ada di TIO):di mana
d
menghitung jumlah digit untuk basis yang diperlukan.Turun 4 byte setelah basis dijamin lebih besar dari 1.
Cobalah online!
sumber
Japt , 9 byte
Mengambil input sebagai dua bilangan bulat.
Cobalah online!
sumber
Javascript (ES6),
6867 bytePerhatikan bahwa karena kita hanya diharuskan untuk menangani nomor basis- k atau basis-10 untuk
n
, saya berasumsin
adalah bilangan bulat basis-10.-1 byte, terima kasih kepada TheLethalCoder!
Bagaimana itu bekerja:
Cobalah online!
sumber
n=>k=>...
, akan dipanggil seperti(345)(10)
Javascript ES6, 62 byte
sumber
Perl 6 , 40 byte
Menguji
Diperluas:
sumber
Mathematica, 30 byte
Fungsi murni mengambil dua argumen, integer dan basis (dalam urutan itu), dan mengembalikan
True
atauFalse
. Hati-hati: dua yang pertama|
hanya karakter ASCII yang normal, sedangkan yang terakhir∣
adalah U + 2223.#2<2
berurusan dengan kasus khusus basis 1. Jika tidak,Tr@IntegerDigits@##
menghasilkan jumlah digit dari argumen pertama ketika ditulis dalam basis argumen kedua, dan...∣#
menguji apakah jumlah itu membagi argumen pertama.sumber
Batch, 119 byte
Output 1 untuk nomor Harshad.
sumber
Python 3 , 45 byte
Cobalah online!
Berdasarkan format yang diperbarui untuk input.
sumber
C (gcc) , 57 byte
Cobalah online!
sumber
Pari / GP , 25 byte
Cobalah online!
sumber
Java (OpenJDK 8) , 54 byte
Cobalah online!
sumber