Jangan bingung dengan Least Common Multiple .
Diberikan daftar bilangan bulat positif dengan lebih dari satu elemen, kembalikan produk paling umum dari dua elemen dalam array.
Misalnya, MCM daftar [2,3,4,5,6]
adalah 12
, seperti tabel produk adalah:
2 3 4 5 6
---------------
2 | # 6 8 10 12
3 | # # 12 15 18
4 | # # # 20 24
5 | # # # # 30
6 | # # # # #
Terima kasih DJMcMayhem untuk tabelnya
Seperti yang 12
muncul paling sering (dua kali lipat 2*6
dan 3*4
). Perhatikan bahwa kami tidak termasuk produk elemen dan itu sendiri, jadi 2*2
atau 4*4
tidak muncul dalam daftar ini. Namun, elemen identik masih akan dikalikan, sehingga tabel untuk [2,3,3]
terlihat seperti:
2 3 3
----------
2 | # 6 6
3 | # # 9
3 | # # #
Dengan keberadaan MCM 6
.
Jika terjadi dasi, Anda dapat mengembalikan salah satu elemen yang diikat, atau daftar semuanya.
- Ini adalah kode-golf , sehingga jumlah byte terpendek untuk setiap bahasa akan menang!
Uji kasus:
[2,3,4,5,6] -> 12
[7,2] -> 14
[2,3,3] -> 6
[3,3,3] -> 9
[1,1,1,1,2,2] -> 2
[6,200,10,120] -> 1200
[2,3,4,5,6,7,8,8] -> 24
[5,2,9,10,3,4,4,4,7] -> 20
[9,7,10,9,7,8,5,10,1] -> 63, 70, 90 or [63,70,90]
code-golf
array-manipulation
Jo King
sumber
sumber
[3,3,3] -> 9
). Dengan semua kasus pengujian Anda saat ini menyaring pasangan mana pun yang elemennya sama (bahkan untuk kasus uji seperti[2,3,3]
mengandung nilai yang sama) masih akan menahan hasil tes yang benar, tetapi akan gagal untuk kasus pengujian ini karena tidak ada yang akan tetap setelah penyaringan.Jawaban:
Brachylog , 11 byte
Cobalah online!
Penjelasan
sumber
R ,
545041 byteCobalah online!
Atau, untuk
545344 byte:Cobalah online!
Pada prinsipnya, versi terakhir menampilkan hasil yang relevan bahkan tanpa
names
fungsi, tetapi diikuti oleh jumlah produk yang paling sering, yang tidak diminta untuk ...Terima kasih kepada CriminallyVulgar untuk -4 dan -1, dan Giuseppe untuk -9 pada keduanya.
sumber
combn(scan(),2,prod)
bekerja alih-alih menggunakanapply
Jelly , 6 byte
Cobalah online! atau Lihat test suite .
Bagaimana itu bekerja
sumber
Pyth, 12 byte
Suite uji
Pertama, kami mengambil semua kombinasi elemen 2 dari input tanpa penggantian (
.cQ2
). Lalu, kami memetakan masing-masing pasangan ini ke produk mereka (*M
). Selanjutnya, kami menimpa variabel input dengan daftar produk (=
). Selanjutnya, kami mengurutkan daftar produk berdasarkan jumlah kemunculan dalam daftar produk (o/QN
). Akhirnya, ambil elemen terakhir dari daftar yang disortir (e
).sumber
MATL ,
87 byteCobalah online!
(-1 byte dengan menggunakan metode dari @Mr. Xcoder's Jelly answer .)
Jawaban yang lebih lama:
8 byte
Cobalah online!
sumber
05AB1E ,
86 byte-2 byte terima kasih kepada @Kaldo .
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
ù
.Mathematica, 32 byte
-17 byte (dan perbaikan) terima kasih kepada JungHwan Min .
Fungsi murni. Mengambil daftar angka sebagai input dan mengembalikan daftar MCM sebagai output.
sumber
{3, 3, 3}
. Tetap:Commonest[1##&@@@#~Subsets~{2}]&
Subsets
tidak menghitung pengulangan sebagai elemen terpisah. Sepertinya memang begitu, jadi terima kasih!MATLAB, 43 byte
Ini juga semacam twister lidah!
Penjelasan
sumber
I'*I*1-eye
Mengapa tidak adilI'*I-eye
?Perl 6 ,
4138 byteCobalah online!
sumber
:
.Stax ,
1210 byteJalankan dan debug itu
sumber
Python 3 ,
7772 byteCobalah online!
sumber
Attache , 59 byte
Cobalah online!
Masih berusaha sedikit menurunkan golf ini, tapi saya pikir ini mendekati optimal untuk pendekatan yang saya pilih.
Penjelasan
Ini adalah komposisi dari tiga fungsi:
{Flat[UpperTriangle&1!Table&_!`*]^^0}
SortBy#`&&:`~
Last
Fungsi pertama melakukan sebagian besar perhitungan:
Yang kedua agak rumit tetapi melakukan sesuatu yang agak sederhana. Pertama, berguna untuk mengetahui bahwa itu
f&n
adalah fungsi yang, ketika dipanggil dengan argumen...x
, kembalif[...x, n]
.f&:n
serupa, kembalif[n, ...x]
. Sekarang, mari kita uraikan ini:Pertama,
f#g
buat garpu. Dengan inputn
, ia kembalif[n, g[n]]
. Namun, dalam hal ini,f
adalah fungsinya~SortBy
.~f
membalikkan argumen fungsi. Ini berarti~f#g
setara denganf[g[n], n]
, atau di siniSortBy[(`& &: `~)[n], n]
,.`& &: `~
ikuti formulirf&:n
. Tetapi apakah itu`&
dan`~
? Mereka adalah "kutipan operator", dan mengembalikan fungsi yang setara dengan operator yang dikutip. Jadi, dalam hal ini,`&
adalah hal yang sama dengan${ x & y }
. Dengan mengingat hal itu, ungkapan ini setara dengan yang berikut untuk operator biner:Ini menghasilkan fungsi
`~&x
, di manax
hasil dari fungsi pertama.n ~ a
menghitung kejadiann
dia
. Jadi, ini mengembalikan fungsi yang menghitung kemunculan argumen dalam array yang dihitung dari fungsi 1.Kembali ke
SortBy
, ini setiap elemen dalam array dengan berapa kali muncul di dalamnya.Akhirnya,
Last
ambil elemen yang paling banyak terjadi. Ikatan rusak oleh algoritma penyortiran.sumber
[5, 2, 9, 10, 3, 4, 4, 4, 7] -> 16
bukannya20
tanpa itu.JavaScript (ES6),
7270 byteCobalah online!
sumber
Arang , 24 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Sementara larik input tidak kosong ...
... pop elemen terakhir dan gandakan sisa array dengan elemen itu ...
... dan dorong hasilnya ke daftar kosong yang telah ditentukan.
Hitung berapa kali setiap produk muncul dalam daftar dan ambil ...
... lalu filter untuk produk yang jumlahnya sama dengan maksimum ...
... lalu pop elemen terakhir dan masukkan ke string untuk hasil cetak implisit.
sumber
Sekam , 7 byte
Cobalah online!
Penjelasan
sumber
APL (Dyalog Unicode) ,
29 2719 byteCobalah online!
Tacit fn.
Terima kasih Adám untuk versi diam-diam dan 2 byte.
Terima kasih ngn untuk 8 byte!
Bagaimana:
sumber
Japt ,
2016 byteCobalah online!
sumber
CJam ,
7068 byteCobalah online!
Penjelasan
Anda perlu menggulir ke kanan untuk melihat penjelasan karena kodenya cukup panjang, serta penjelasannya.
Ini adalah mimpi buruk mutlak untuk ditulis. CJam tidak memiliki fungsi powerset (tidak seperti satu ton bahasa golf lainnya - pilihan bagus di pihak saya), yang berarti bahwa saya harus secara manual menemukan powerset. Namun, ini memberi saya kesempatan untuk mengabaikan sejumlah faktor yang tidak valid, tidak seperti jawaban lain dengan fungsi powerset.
Ini harus golf, mengingat saya buruk di CJam.
Perubahan:
Helen memotong 2 byte!
Lama:
q',/S*~_,1-:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,1-=
baru:
q',/S*~_,(:L{LX-,0a\+[{X1++}*](;{_X=\_Y=@*\}fY}fX]~;]_{\_@e=}$\;_,(=
Dengan mengubah
1-
s secara sederhana(
kita mendapatkan efek yang sama tetapi dengan jumlah byte yang lebih rendah.sumber
Java (JDK 10) , 132 byte
Cobalah online!
sumber
Haskell ,
9694 byte-2 byte terima kasih kepada nimi (menggunakan
sortOn(0<$)
bukanlength
)!Cobalah online!
sumber
MATLAB 39 byte
Lihat juga jawaban oleh Jacob Watson
sumber
b=triu(a'*a,1);
menghemat 4 byte.triu
awalnya tetapi terhanyut entah bagaimanaSQL Server, 93 byte
Input diasumsikan berasal dari tabel formulir
Populasi tabel contoh:
Penjelasan:
Saya berasumsi "daftar bilangan bulat" akan memiliki indeks yang terkait dengannya, yang dalam kasus saya adalah kolom
i
. Koloma
berisi nilai-nilai daftar.Saya membuat produk dari setiap pasangan, di mana pasangan kiri masuk dalam daftar lebih awal dari pasangan yang tepat. Saya kemudian mengelompokkan produk, dan mengurutkan berdasarkan jumlah yang paling padat.
Saya sedikit sedih karena saya tidak bisa menggunakan klausa cte atau partisi, tetapi terlalu panjang.
SELECT
adalah kata kunci yang sangat mahal.Alternatif, 183 byte
Jika SQL tidak dapat memiliki kolom indeks terpisah, berikut ini adalah solusi tempat saya membuat indeks menggunakan
ROW_NUMBER
fungsi. Saya pribadi tidak peduli dengan pesanan, tetapi pesanan diperlukan dan menggunakana
kolom adalah yang terpendek.sumber
CJam , 29 byte
Cobalah online!
sumber
Burlesque - 8 byte
Cobalah online di sini.
(dan ya, Burlesque juga memiliki perintah untuk "elemen paling tidak umum")
sumber
C # (Visual C # Interactive Compiler) , 95 byte
Cobalah online!
Lebih sedikit kode golf:
sumber
PHP, 91 byte
mengambil input dari argumen baris perintah; jalankan dengan
-nr
atau coba online .Gunakan PHP 7 untuk menghindari peringatan STRICT MODE.
sumber
J,
29252423 byteCobalah online!
bagaimana
sumber
Japt
-h
, 11 byteCobalah
Cobalah
sumber
APL (NARS), 53 karakter, 106 byte
Uji:
sumber