Multiple paling umum (LCM) dari satu set angka A
adalah bilangan bulat terkecil b
sehingga b/a
merupakan bilangan bulat untuk semua bilangan bulat a
di A
. Definisi ini dapat diperluas ke bilangan rasional!
Tugas
Temukan rasional positif terkecil b
sehingga b/a
merupakan bilangan bulat untuk semua rasional a
dalam input.
Aturan
- Celah standar dilarang.
- Anda dapat mengambil pembilang dan penyebut secara terpisah dalam input, tetapi mungkin tidak mengambil ganda, mengapung, dll.
- Input mungkin tidak sepenuhnya berkurang.
- Anda dapat mengambil input integer sebagai rasional dengan penyebut dari
1
. - Pengajuan yang akan memberi makan nomor rasional ke builtin LCM / GCD diperbolehkan, tetapi tidak bersaing.
Uji Kasus
In: 3
Out: 3
In: 1/17
Out: 1/17
In: 1/2, 3/4
Out: 3/2
In: 1/3, 2/8
Out: 1
In: 1/4, 3
Out: 3
In: 2/5, 3
Out: 6
In: 1/2, 3/4, 5/6, 7/8
Out: 105/2
Ini adalah kode-golf , jadi pengiriman menggunakan byte paling sedikit menang!
code-golf
number
arithmetic
rational-numbers
JungHwan Min
sumber
sumber
LCM[numerators]/GCD[denominators]
mungkin tidak berfungsi ketika input berisi angka rasional yang tidak dikurangi. mis1/3, 2/8
.Jawaban:
Jelly , 19 byte
Cobalah online!
sumber
g/:@$€
->:g/$€
:g/$€ZµḢæl/,Ḣg/$
J, 3 byte, tidak bersaing.
Diberikan daftar input rasional, ini melipat LCM melaluinya.
sumber
sed, 374 (373 +1) byte
-E
Bendera sed dihitung sebagai satu byte. Catatan: Saya belum mencoba bermain golf ini, dan mungkin tidak akan lama.Input diambil di unary, dan output di unary. Spasi harus mengelilingi setiap fraksi. Contoh:
echo " 1/111 111/11111 111111/111 "
.Cobalah online!
sumber
Python 2 , 65 byte (tidak bersaing)
Cobalah online!
sumber
JavaScript (ES6), 85 byte
Lihatlah tidak ada builtin! Tidak diragukan lagi seseorang akan mengalahkan ini menggunakan pendekatan rekursif atau sesuatu.
sumber
Pari / GP , 3 byte, tidak bersaing
Cobalah online!
sumber
Perl 6 ,
4642 bytemenguji
menguji
Input adalah daftar angka Rasional .
Diperluas:
sumber
Retina , 117 byte
Cobalah online! Mengambil input sebagai serangkaian fraksi yang tidak tepat yang dipisahkan ruang (tidak ada bilangan bulat atau angka campuran). Penjelasan:
Mengkonversi desimal ke unary.
Ini mengurangi setiap fraksi ke ketentuan terendah. Grup tangkapan 1 menunjukkan GCD pembilang dan penyebut, jadi kami menghitung jumlah tangkapan sebelum dan sesudah
/
.\b(1+)+/(\1)+\b
tampaknya tidak menghitung jumlah tangkapan dengan benar karena beberapa alasan, jadi saya menggunakan grup penangkapan tambahan dan menambahkan 1 ke hasilnya.Ini melakukan sejumlah hal. Grup tangkap 2 mewakili GCD pembilang dari dua fraksi pertama, sedangkan kelompok tangkap 3 mewakili GCD penyebut.
$#4
Oleh karena itu pembilang kedua dibagi dengan GCD mereka. (Sekali lagi, saya tidak bisa mendapatkan jumlah tangkapan dari pembilang pertama, tetapi saya hanya perlu membagi satu pembilang dengan GCD mereka, sehingga tidak perlu terlalu mahal.)Sekarang pembilang kedua telah dibagi oleh GCD mereka, kami hanya menggunakan ungkapan ini dari tutorial aritmatika unary untuk melipatgandakan keduanya, menghasilkan LCM. Kami kemudian mengulangi latihan untuk fraksi yang tersisa.
Mengubah unary kembali ke desimal.
sumber
Common Lisp, 154 byte
Algoritma digunakan (ditentukan untuk bilangan bulat, tetapi berfungsi juga untuk rasional).
Pertama buat daftar asosiatif dari data input dengan dirinya sendiri, untuk melacak nilai awal elemen, sehingga urutan operasi diberikan oleh "mobil" dari daftar.
Kasus uji:
Catatan: Solusinya adalah tanpa menggunakan builting
lcm
dangcd
, yang menerima bilangan bulat.sumber
(/ (lcm 1 3 5 7) (gcd 2 4 6 8))
.(lcm 1 3 5 7)
, karena bilangan bulat adalah subtipe rasional, tapi saya pikir aturan seharusnya mengecualikan penggunaanlcm
ataugcd
yang memungkinkan input rasional.lcm
dangcd
.Mathematica, 3 byte, tidak bersaing
LCM
Fungsi built-in Mathematica mampu menangani input bilangan rasional.sumber
PHP , 194 byte
-4 Bytes dengan PHP> = 7.1
[$n,$d]=$_GET
bukanlist($n,$d)=$_GET
Cobalah online!
sumber
Common Lisp,
8778 byteMenggunakan
lcm
dangcd
, yang memiliki input bilangan bulat:Lebih banyak bermain golf:
sumber