Kegigihan Multiplikasi
- Lipat gandakan semua angka dalam satu angka
- Ulangi sampai Anda memiliki satu digit tersisa
Seperti yang dijelaskan oleh Numberphile :
- Numberphile "Apa yang istimewa tentang 277777788888899?"
- Numberphile "Kegigihan Multiplikatif (rekaman ekstra)"
Contoh
- 277777788888899 → 2x7x7x7x7x7x7x8x8x8x8x8x8x9x9 = 4996238671872
- 4996238671872 → 4x9x9x6x2x3x8x6x7x1x8x7x2 = 438939648
- 438939648 → 4x3x8x9x3x9x6x4x8 = 4478976
- 4478976 → 4x4x7x8x9x7x6 = 338688
- 338688 → 3x3x8x6x8x8 = 27648
- 27648 → 2x7x6x4x8 = 2688
- 2688 → 2x6x8x8 = 768
- 768 → 7x6x8 = 336
- 336 → 3x3x6 = 54
- 54 → 5x4 = 20
- 20 → 2x0 = 0
Omong-omong, ini adalah catatan saat ini: angka terkecil dengan jumlah langkah terbesar.
Golf
Sebuah program yang mengambil seluruh bilangan sebagai input dan kemudian menampilkan hasil dari setiap langkah, dimulai dengan input itu sendiri, hingga kita menekan satu digit. Untuk 277777788888899 output seharusnya
277777788888899
4996238671872
438939648
4478976
338688
27648
2688
768
336
54
20
0
(Menghitung jumlah langkah dibiarkan sebagai latihan untuk pengguna).
Lebih banyak contoh
Dari A003001 :
25
10
0
Dari A003001 juga:
68889
27648
2688
768
336
54
20
0
Dari video Numberphile :
327
42
8
Jadi ada pertanyaan tentang Ketekunan Aditif , tetapi ini adalah Multiplicative Persistence. Selain itu, pertanyaan itu menanyakan jumlah langkah sebagai output, sementara saya tertarik melihat hasil antara.
Jawaban:
Jelly , 4 byte
Cobalah online!
Penjelasan
Sebagai bonus, inilah TIO yang akan menemukan angka dengan jumlah langkah terbesar untuk rentang angka tertentu. Ini berskala baik bahkan di TIO.
sumber
TI-BASIC (TI-84),
303231 byte-1 byte terima kasih kepada @SolomonUcko!
Input di
Ans
.Output ditampilkan sebagai permintaan tantangan. Trailing
Ans
diperlukan untuk mencetak langkah terakhir.Saya akui, saya tidak memikirkan formula ini sendiri, tetapi saya menemukannya sini dan memodifikasinya agar lebih sesuai dengan tantangan.
SUNTING: Setelah membaca ulang tantangan, saya menyadari bahwa program harus diakhiri jika produknya satu digit. Oleh karena itu, 2 byte ditambahkan ke akun untuk ini.
Contoh:
Penjelasan:
Model Visual:
Ans
dimulai sebagai125673
.Model ini hanya mencakup logika di balik mengalikan digit; yang lainnya lebih mudah dipahami.
Catatan:
TI-BASIC adalah bahasa tokenized. Jumlah karakter tidak sama dengan jumlah byte.
10^(
aku s ini token satu byte .Program ini tidak akan menyediakan urutan produk yang benar dengan bilangan bulat yang lebih besar dari 14 digit karena keterbatasan ketelitian desimal pada kalkulator TI.
sumber
10^(
luarseq(
dan menghilangkan tanda kurung tutup?K (ngn / k) , 9 byte
Cobalah online!
{
}\
terus menerapkan fungsi dalam kurung kurawal sampai urutan bertemu$x
memformat argumen sebagai string (daftar karakter).'
mengevaluasi masing-masing (dialek k lainnya membutuhkan titik dua,.:'
)*/
kali lipat, yaitu produksumber
dzaima / APL ,
1411 byteCobalah online!
sumber
R , 59 byte
Cobalah online!
Karena
print
invisibly
mengembalikan inputnya, kita dapat menggunakanprint(n)
di dalamwhile
loop untuk mensimulasikando-while
loop. Ini terinspirasi oleh salah satu tips saya untuk bermain golf di R .Header membantu mencegah sejumlah besar dicetak dalam notasi ilmiah.
sumber
05AB1E ,
74 byteCobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Bahasa Wolfram (Mathematica) , 47 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 45 byte
Cobalah online!
sumber
Echo
.Perl 6 , 23 byte
Cobalah online!
sumber
Python 2 ,
4643 byte-3 Terima kasih kepada xnor (perbandingan dirantai)
Cobalah online!
sumber
>
di tempatand
.PowerShell , 54 byte
Cobalah online!
Metode berulang yang pertama kali menulis argumen input, kemudian mengubahnya menjadi string dan pipa itu menjadi array karakter. Array ini bergabung dengan tanda bintang tunggal, dan dieksekusi sebagai perintah dengan alias ekspresi panggil. Karena ini menulis angka Mulai ke angka terakhir lebih besar dari 0, (20, dalam skenario pengujian yang diberikan), saya menambahkan final
$a
ke ujung ke output.sumber
C # (Visual C # Interactive Compiler) ,
797468 byteSaya mencoba untuk menjauh dari rekursi dalam C # karena berapa lama deklarasi metode, tetapi dalam hal ini menghemat dibandingkan dengan satu loop.
Cobalah online!
sumber
PHP , 63 byte
Versi berulang, panggilan dengan
php -nF
input dariSTDIN
.Cobalah online!
PHP ,
7271 byteCobalah online!
Versi rekursif, sebagai fungsi.
Input: 27777778888889999
Input: 23
sumber
Python 2 ,
616259 byteCobalah online!
-3 byte, terima kasih kepada Jonathan Allan
sumber
int.__mul__
adalah tiga byte kurang darilambda a,b:a*b
f(reduce(int.__mul__,map(int,`n`)))
kef(eval('*'.join(`n`)))
untuk menyimpan 13 byte.perl 5 (
-n
-M5.01
),323025 byte25 byte
30 byte
32 byte
sumber
-lpF//
-lpF//
, memperbaruiMathGolf ,
910 byteCobalah online!
Sekarang ia menangani input yang benar dengan satu digit. Tidak sempurna, tapi setidaknya itu benar.
Penjelasan
sumber
Julia 0.7 ,
3633 byteCobalah online!
Terima kasih kepada H.PWiz untuk -3 byte.
sumber
[n;f(prod(digits(n)))]
JavaScript (ES6), 45 byte
Mengembalikan array bilangan bulat.
Cobalah online!
sumber
PowerShell , 51 byte
Cobalah online!
sumber
APL (NARS), 19 karakter, 38 byte
uji:
sumber
Haskell, 45 byte
Cobalah online!
sumber
J , 16 byte
Cobalah online!
sumber
Ruby ,
383534 byteCobalah online!
1 byte disimpan oleh G B.
sumber
Japt
-R
, 9 byteSangat tidak efisien - jangan coba - coba menjalankan test case pertama!
Cobalah
sumber
Brachylog , 7 byte
Cobalah online!
Penjelasan
sumber
JavaScript (Babel Node) , 46 byte
Cobalah online!
JavaScript (Babel Node) , 44 byte
Jika input dapat diambil sebagai String
Cobalah online!
sumber
PowerShell ,
6459 byteCobalah online!
Metode berulang. Membawa input dan menyimpannya ke dalam
$a
, kemudian memasukifor
lingkaran selama panjangnya$a
dua atau lebih (yaitu, lebih besar dari9
). Di dalam loop kita output$a
dan kemudiant
hitung ulang dengan mengubahnya oCharArray
,join
ing bersama-sama dengan*
, dan kemudianiex
(kependekan dariInvoke-Expression
dan mirip denganeval
). Setelah kita keluar dari loop, kita memiliki satu digit yang tersisa untuk dicetak, jadi kita menempatkan$a
ke dalam pipa lagi.-5 byte berkat KGlasier.
sumber
9-lt$a
alih-alih$a.length-1
menghemat 5 byte. Dan jika Anda tidak menggunakan tali sepanjang waktu Anda bisa memotong sepotong yang layak. Lihat upaya PowerShell saya jika Anda mau!Arang , 13 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Cetak input untuk pertama kalinya.
Ulangi sementara panjang input bukan 1.
Ganti input dengan produk digitalnya menjadi string.
Cetak input pada baris baru.
sumber
Retina , 24 byte
Cobalah online! Penjelasan:
Cetak nilai saat ini pada barisnya sendiri di awal setiap loop sampai berhenti berubah dan jangan mencetak nilai yang tidak berubah dua kali. Mengevaluasi nilai saat ini di akhir setiap loop.
Tambahkan
*
setelah setiap digit.Selesai mengubah input menjadi ekspresi yang mengevaluasi produk digital.
Sebagai catatan, Retina dapat melakukan ini dalam satu baris (25 byte):
sumber
C (gcc) , 58 byte
Cobalah online!
Pendekatan berulang ternyata lebih pendek 1 byte.
C (gcc) ,
6159 byte (rekursif)Cobalah online!
Rekursi tampaknya lebih pendek dari iterasi untuk pencetakan dan langkah ...sumber