Diberikan bilangan bulat positif dan tulis beberapa kode untuk mengambil faktorisasi utamanya dan mengganti semua faktornya 2
dengan 3
.
Sebagai contoh
12 = 2 * 2 * 3 -> 3 * 3 * 3 = 27
Ini adalah kode-golf sehingga tujuannya adalah untuk meminimalkan jumlah byte jawaban Anda.
Uji kasus
1 -> 1
2 -> 3
3 -> 3
4 -> 9
5 -> 5
6 -> 9
7 -> 7
8 -> 27
9 -> 9
10 -> 15
11 -> 11
12 -> 27
13 -> 13
14 -> 21
15 -> 15
16 -> 81
17 -> 17
18 -> 27
19 -> 19
20 -> 45
21 -> 21
22 -> 33
23 -> 23
24 -> 81
25 -> 25
26 -> 39
27 -> 27
28 -> 63
29 -> 29
sumber
Python 2 , 28 byte
Cobalah online!
Membagi angka secara rekursif dengan 2 dan mengalikan hasilnya dengan 3, asalkan angkanya genap. Angka ganjil kembali sendiri.
Alt 32 byte:
Cobalah online . Memiliki beberapa kesalahan float. Konstanta adalah
log_2(3)-1
.Menggunakan
(n&-n)
untuk menemukan kekuatan-of-2 faktor terbesarn
, yang bertobat3**k
untuk2**k
dengan menaikkan ke kekuatanlog_2(3)-1
.sumber
05AB1E , 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Haskell,
2423 byteBagi dengan dua dan kalikan dengan 3 hingga trik aneh di Haskell.
Cobalah online!
Alternatif dengan lambda alih-alih fungsi pointfree dan dengan jumlah byte yang sama:
Sunting: @ ais523 menyimpan satu byte dalam versi asli dan @ Ørjan Johansen satu di versi alternatif, sehingga kedua versi memiliki panjang yang sama. Terima kasih!
sumber
odd`until`\x->div(x*3)2
.$
untuk mengganti sepasang tanda kurung: Coba online!()
versi lambdaJavaScript (ES6), 19 byte
Sementara input dapat dibagi dua, dikalikan dengan 1,5, yang setara dengan membaginya dengan 2 dan mengalikannya dengan 3.
sumber
x*3/2
memiliki bytecount yang samaf=
biasanya tidak diperlukan untuk js.f(x*1.5)
perlu memiliki namaf
, maka mengapaf=
disertakan.Brain-Flak , 76 byte
Cobalah online!
Penjelasan
Program ini bekerja dengan membagi angka dengan dua dan tiga kali lipat hingga mendapat satu dari sisa divisi. Kemudian berhenti berputar dan menggandakan dan menambahkan satu ke nomor terakhir.
Penjelasan lebih rinci akhirnya ...
sumber
Mathematica,
2219 byteTerima kasih kepada lanlock4 untuk menghemat 3 byte!
Fungsi murni yang melakukan penggantian berulang kali, satu faktor 2 sekaligus. Bekerja pada semua bilangan bulat positif kurang dari 2.565.537 .
sumber
x_?EvenQ
berhasilx_/;EvenQ@x
?MATL ,
7, 6 byteCobalah online!
1 byte disimpan berkat pengamatan jenius Dennis
Cara terbaik untuk menjelaskan ini adalah dengan menunjukkan tumpukan di berbagai titik.
Solusi alternatif:
sumber
Yf3H$X>p
untuk 8 byte05AB1E ,
65 byteMenyimpan satu byte, terima kasih kepada Adnan .
Cobalah online!
Penjelasan
sumber
ÒDÈ+P
harus menyimpan byteAlice , 9 byte
Cobalah online!
Alice memiliki built-in untuk mengganti pembagi nomor dengan yang lain. Saya tidak berpikir saya akan benar-benar memanfaatkannya begitu cepat ...
Menggunakan poin kode karakter untuk I / O, ini menjadi 6 bytes:
I23SO@
.Penjelasan
sumber
Jelly ,
85 byteCobalah online!
-3 byte berkat petunjuk dari @Dennis!
sumber
Pyth -
14109 byteMenghitung jumlah 2 dalam faktorisasi utama (/ PQ2). Mengalikan input dengan 1,5 ^ (# of 2s)
Cobalah
sumber
Jawa , 38 byte
Cobalah online!
Solusi 43 byte sebelumnya:
Cobalah online!
sumber
Segi enam ,
11291 byteUkuran kisi 6 (91 byte)
Versi ringkas
Ukuran kisi 7 (112 byte)
Cobalah online!
Versi Ringkas:
Versi Ungolfed untuk keterbacaan yang lebih baik:
Perkiraan Tata Letak Memori
Gray Path (inisialisasi memori)
Entri loop
Green Path (nilainya masih dapat dibagi 2)
Jalur Merah (nilai tidak lagi dapat dibagi 2)
sumber
%2
dan:2
keduanya ke tepi "modulo"? (Jadi Anda bisa menyingkirkan dua tepi teratas.) Dan kemudian, dapatkah Anda memasang cabang "pengali" ke tepi "modulo" alih-alih tepi "pembagi" sehingga Anda memerlukan lebih sedikit gerakan setelah setiap cabang? (Anda bahkan dapat memutar bagian itu, sehingga "hasil" atau "temp 2" menyentuh "modulo" yang berarti Anda hanya perlu menyalin hasil akhir satu kali sebelum dapat menghitung produk.)Retina , 23 byte
Cobalah online!
sumber
Brachylog , 7 byte
Cobalah online!
Bagaimana itu bekerja
sumber
J , 11 byte
Cobalah online!
[:
cap (placeholder untuk memanggil kata kerja berikutnya secara monadik)*/
produk dariq:
faktor utama+
plus (yaitu dengan satu menambahkan di mana)2
dua=
sama dengan (masing-masing)q:
faktor utamasumber
[:
menjijikkan.J ,
151210 byteCobalah online!Pekerjaan yang mirip dengan di bawah ini, hanya memiliki logika berbeda tentang penggantian
2
dengan3
.15 byte
Cobalah online!
Penjelasan
sumber
roll
sini. :)Pyth , 9 byte
Output integer \ o /
Suite uji .
Bagaimana itu bekerja
sumber
Japt ,
19 16 10 97 bytesCobalah online!
Penjelasan
sumber
×
adalah jalan pintas untukr@X*Y}1
(atau hanyar*1
), yang mungkin berguna. Ada jugaXwY
yang manaMath.max(X,Y)
.k m_w3Ã×
untuk menghemat satu byte. Juga,m_
bisa disingkat menjadi®
.PHP, 36 Bytes
Cobalah online!
sumber
for($a=$argn;!1&$a;)$a*=3/2;echo$a;
penggantian nama$argn
menghemat satu byte.CJam,
109 byteSangat sederhana.
Penjelasan:
sumber
Hexagony ,
28 2726 byteCobalah online!
Ditata:
Ini pada dasarnya berjalan:
Pada titik ini adalah latihan tentang betapa menyiksanya saya bisa mendapatkan jalur loop untuk meminimalkan byte.
sumber
Japt , 7 byte
Cobalah online!
Penjelasan
sumber
APL (Dyalog Unicode) , 26 byte
Cobalah online!
Ini terlalu verbose, saya pasti melakukan sesuatu yang salah ...
sumber
R, 42 byte
Jumlah byte yang tepat dalam sebuah jawaban.
Cukup mudah, menggunakan
gmp
paket untuk membuat faktorx
, menggantikan 2s dengan 3s, dan mengembalikan produk.sumber
Befunge-93 , 20 byte
Cobalah online!
sumber
Perl 6 , 14 byte
lsb mengembalikan posisi bit paling tidak signifikan, dihitung dari kanan. Yaitu, berapa banyak angka nol yang tertinggal dalam representasi biner, yang sama dengan jumlah faktor 2. Jadi naikkan 3/2 menjadi kekuatan itu dan kita selesai.
sumber
Pyke , 5 byte
Cobalah online!
sumber
Sebenarnya , 9 byte
Cobalah online!
Penjelasan:
sumber