Dimulai dengan bilangan bulat positif N , temukan bilangan bulat terkecil N ' yang dapat dihitung dengan berulang kali membagi N dengan salah satu digitnya (dalam basis-10). Setiap digit yang dipilih harus merupakan pembagi N lebih besar dari 1 .
Contoh 1
Output yang diharapkan untuk N = 230 adalah N '= 23 :
Contoh # 2
Output yang diharapkan untuk N = 129528 adalah N '= 257 :
Waspadalah terhadap jalur yang tidak optimal!
Kita bisa mulai dengan 129528/9 = 14392 , tetapi itu tidak akan menghasilkan hasil sekecil mungkin. Yang terbaik yang bisa kita lakukan jika kita membagi 9 adalah:
Aturan
- Input dapat diambil dalam format apa pun yang wajar (integer, string, array digit, ...).
- Ini kode-golf , jadi jawaban tersingkat dalam byte menang!
Uji kasus
1 --> 1
7 --> 1
10 --> 10
24 --> 1
230 --> 23
234 --> 78
10800 --> 1
10801 --> 10801
50976 --> 118
129500 --> 37
129528 --> 257
8377128 --> 38783
655294464 --> 1111
code-golf
integer
optimization
division
Arnauld
sumber
sumber
Jawaban:
Haskell ,
6761 byteCobalah online!
Penjelasan:
read.pure<$>show n
mentransformasikan integer inputn
menjadi daftar digit.d
dari daftar ini, kami memeriksad>1
danmod n d<1
, yaitu apakahd
membagin
.n
olehd
dan rekursif berlakuf
:f$div n d
.n
.n
dan mengembalikanminimum
daftar.sumber
Jelly , 8 byte
Cobalah online!
Versi alternatif, jauh lebih cepat, 9 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 , 59 byte
Cobalah online!
sumber
Ruby ,
5247 byteBersaing untuk grup bahasa non-eksotis! (Catatan: ide yang bagus, jika tidak bermain golf, adalah menambahkan
.uniq
setelah.digits
karena semua cabang serupa memiliki hasil yang sama)Cobalah online!
Penjelasan
sumber
x<2|n%x?n:f[n/x]
untuk menyimpan dua atau tiga byte (tergantung pada apakah Anda memerlukan satu|
atau dua)?value%zero
sebagai pembagian dengan nol, sehingga hubungan arus pendek tidak akan berfungsi. Juga,0
adalah nilai kebenaran di ruby (satu-satunya nilai falsey adalah false dan nil).||
s?>0
, tetapi kemudian itu adalah jumlah char yang sama.0
datangnya jika Anda tidak menggunakan|
?Common Lisp , 136 byte
Cobalah online!
Versi yang dapat dibaca:
sumber
Jelly , 21 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 44 byte
-7 byte berkat Misha Lavrov.
Cobalah online!
sumber
⋂
karakter untukIntersection
. Tapi ada kasus besar yang tidak bisa lagi ditangani karena kehabisan memori yang dihasilkanRange[#-1]
.Most@Divisors@#
alih-alihRange[#-1]
untuk menghindari masalah memori, tetapi hasilnya adalah 49 byte .JavaScript (Firefox 30-57), 49 byte
Versi kompatibel ES6, 52 byte:
Awalnya saya mencoba memfilter angka yang tidak relevan tetapi ternyata sedikit lebih panjang pada 54 byte:
sumber
Kotlin ,
10099 byteYg diperindahkan
Uji
Suntingan
sumber
Jelly , 15 byte
Cobalah online!
Saya harus mengakui bahwa
߀
bagian itu dipinjam dari jawaban Erik . Selebihnya dikembangkan secara terpisah, sebagian karena saya bahkan tidak mengerti bagaimana sisa jawaban itu bekerja: P.Bagaimana itu bekerja?
* Saya terkejut bahwa
¡
berfungsi seperti itu pada daftar, karena makna normal berlaku ini n kali .Setelah Dennis menjelaskan mengapa
߀
tidak memerlukan persyaratan, kita memiliki versi 12-byter ini , atau versi 8 byte-nya: P.sumber
R ,
10198 byteCobalah online!
Satu ton byte digunakan untuk mengekstraksi digit dan mana yang dibagi
x
; mungkin diperlukan pendekatan lain.sumber
Excel Vba, 153 byte
Golf kode pertama dalam satu-satunya bahasa yang saya tahu :( Tidak ramah golf ...
Panggil seperti ini:
Saya belum tahu ke mana harus menguji ini secara online.
sumber
And N > 0
denganN = S
pada baris sebelumnya. (Juga, jika saya memiliki cara untuk mengujinya, insting pertama saya adalah memeriksa apakah ada ruang yang bisa dihilangkan.)APL (Dyalog) , 33 byte
Cobalah online!
Bagaimana?
⍎¨⍕⍵
- ambil digitn
1~⍨
- tidak termasuk1
so/⍨
- filter menurut0=⍵|⍨o
- pembagian darin
oleh digit⍬≡...:⍵
- jika kosong, kembalin
⌊/
- jika tidak, kembalikan minimum∇¨
- rekursi untuk setiap nomor dalam⍵÷d
- pembagiann
oleh masing-masing digit yang difilter di atassumber
Perl 5, 87 + 1 (
-p
) = 88 bytecoba online
sumber
PHP, 120 byte
Cobalah online!
sumber
Pari / GP , 49 byte
Cobalah online!
sumber