Diberikan array bilangan bulat positif, menghasilkan larik stabil dari faktor prima yang berbeda dari bilangan bulat ini. Dengan kata lain, untuk setiap integer dalam input secara berurutan, dapatkan faktor prima, sortir, dan tambahkan bilangan prima yang belum ada dalam output ke output.
Uji Kasus
[1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7]
[10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7]
[100,99,98,1,2,3,4,5] -> [2,5,3,11,7]
[541,60,19,17,22] -> [541,2,3,5,19,17,11]
[1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17]
[6,7,6,7,6,7,6,5] -> [2,3,7,5]
[1] -> []
[8] -> [2]
[] -> []
Keluaran dapat berupa larik atau daftar bilangan bulat atau string, keluaran terbatas, atau sarana standar lainnya untuk menghasilkan daftar angka yang dipesan.
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
code-golf
array-manipulation
primes
Stephen
sumber
sumber
Jawaban:
05AB1E , 3 byte
Output sebagai daftar String.
Cobalah online!
2sable , 3 byte
Ya, ini juga berfungsi dalam 2sable. Juga mengembalikan daftar Strings.
Cobalah online!
sumber
f U
. Suka.Sekam , 3 byte
1 byte disimpan berkat @Zgarb .
Cobalah online!
Penjelasan
sumber
Σ†
bisaṁ
.Utilitas Bash + GNU, 37
Cobalah online .
sumber
nl|sort|...
dapat dilakukan dengan menggunakanawk
:awk '!a[$0]++'
(cetak jika tidak terlihat sebelumnya; jadi pesanan tidak pernah hilang), menghemat 15 byte. Kemudiansed
perintah dapat dihilangkan dengan menggunakan yang sedikit lebih lamaawk
:factor|awk '!/:/&&!a[$0]++' RS='[ \n]+'
(membagi catatan pada spasi dan baris baru, lewati catatan dengan:
), menyimpan 4 byte lainnya.tr
:factor|tr \ \\n|awk '!/:/&&!a[$0]++'
(itu adalah dua spasi setelah backslash pertama)MATL , 6 byte
Cobalah online!
Penjelasan:
Informasi MATL menarik: umumnya, semua fungsi berlaku untuk vektor (array) dengan mudah. Tetapi dalam kasus ini, jumlah faktor adalah variabel untuk setiap input, dan Matlab dan dengan ekstensi MATL umumnya hanya berurusan dengan matriks persegi, jadi saya harus menggunakan for loop
"
.Lebih lanjut, MATL memiliki dua operator gabungan utama:
h
danv
, penggabungan horizontal dan vertikal. Perilaku mereka berbeda secara signifikan:v
menyatukan seluruh tumpukan, meskipun hanya memiliki satu elemen seperti pada iterasi pertama kami.h
mengambil tepat dua elemen dan akan gagal jika hanya ada satu, sehingga tidak cocok untuk aplikasi ini.sumber
Brachylog , 6 byte
Cobalah online!
Brachylog , 6 byte
Cobalah online!
Penjelasan
sumber
Pyth ,
54 byteCoba di sini! atau Verifikasi semua kasus uji.
Alternatif:
{sPM
Penjelasan
sumber
PowerShell , 102 byte
Cobalah online!
(Pinjam ide faktorisasi dari jawaban TessellatingHeckler pada "Dapatkan engkau di belakang saya Setan-Perdana!")
Mengambil input sebagai array literal
$x
. Membuat array kosong baru$a
. Loops berakhir$x
. Setiap iterasi kita loop dari2
ke angka saat ini, memeriksa apakah itu merupakan faktor-and
prima, kemudian|sort
output dari itu, dan menambahkannya$a
. Ketika kita selesai melalui$x
, kita kemudian output$a
tetapi|select
hanya-u
angka-angka uniknya Ini mengeksploitasi fakta bahwa yang unik bergerak dari kiri ke kanan, mempertahankan kejadian pertama, yang cocok dengan deskripsi masalah. Angka-angka itu ditinggalkan di jalur pipa dan hasilnya tersirat.sumber
CJam, 11 byte
Fungsi yang mengambil array int dan output array int.
Versi Uji
sumber
S*
di dalam braket tutup.Gaia , 4 byte
Cobalah online!
Penjelasan
sumber
Jelly ,
54 byte1 byte terima kasih untuk bertepuk tangan.
Cobalah online!
sumber
Æf
, jadi Anda mungkin dapat menjatuhkan byte denganÆfFQ
Pyke , 4 byte
Coba di sini!
Penjelasan
sumber
Mathematica, 64 byte
memasukkan
sumber
Select[#&@@@Gather[#&@@@Join@@FactorInteger@#],#>1&]&
Haskell, 77 byte
Penjelasan:
x!y
kembali Operator daftar semua faktor prima darix
yang lebih besar dari atau sama dengany
(!2)
fungsi mengembalikan daftar semua faktor prima dari argumenCobalah online.
sumber
Brachylog , 6 byte
Cobalah online!
Penjelasan
sumber
[10,9,8,7,6,5,4,3,2,1]
. Seharusnya[2, 5, 3, 7]
, tidak[2, 3, 5, 7]
ḋᵐoᵐcd
Ohm v2 , 3 byte
Namun 3-byter lain (berkat bahasa dengan auto-vektorisasi).
Cobalah online!
Penjelasan
sumber
Japt , 6 byte
Menguji
Penjelasan
Input array secara implisit
U
. Peta (m
) di atasnya, dapatkan faktor (k
) dari setiap elemen. Ratakan (c
), dapatkan elemen unik (â
) dan keluaran secara implisit.sumber
Python 3 ,
128 125116 byteIni adalah solusi Python murni. Tidak ada paket. Terima kasih kepada Halvard karena telah menghemat 9 byte.
Cobalah online!
Python 2 ,
133 127126 byteCobalah online!
Python 2 ,
142 138134 byteCobalah online!
Sangat terkejut belum ada jawaban Python. Bekerja pada golf.
sumber
Deorst , 16 byte
Cobalah online!
Dilakukan dengan bantuan dari @cairdcoinheringaahing di chatroom Deorst (perhatikan bahwa solusinya berbeda).
Penjelasan
sumber
Deorst , 16 byte
Cobalah online!
Dilakukan dengan bantuan dari @ Mr.Xcoder. Ini terlalu lama untuk bahasa pseudogolf.
Bagaimana itu bekerja
sumber
Pyke , 4 byte
Coba di sini!
sumber
Oktaf, 61 byte
Cobalah online!
sumber
SAYA, 17 byte
Cobalah online!
Bagaimana?
⎕
input yang dievaluasiḊ
pembagi (vektorisasi / verifikasi)ḟ
meratakan’⊢f(‘
decrement, filter, increment (hapus1
)53ǵ'
string'P'
dalam codepage MY, yang merupakan pengujian primality. Sedihnya0x35=53
adalah bilangan prima ke-16, dan tidak ada perintah untuk mendorong16
ke stack> _ <.ƒ
sebagai fungsif(
saring dengan ituū
unikkan←
keluaransumber
C ++, 118 byte
Perlu melewati input dalam
std::vector<int>
, mengembalikan yang lainstd::vector<int>
untuk output.sumber
J, 10 byte
Saya yakin beberapa J-er pintar bisa membuat ini lebih pendek.
sumber
Sebenarnya , 5 byte
Cobalah online!
Penjelasan:
sumber
Python 2,
88119103 byteKita mulai. Dengan penyortiran yang benar.
Saya tidak bisa menjalankannya di TIO, karena paketnya tidak didukung. Itu berjalan di mesin saya tho. Berikut ini adalah hasil tes saya:
Entah bagaimana saya tidak bisa menjadikan fungsinya sebagai fungsi lambda. Setiap kali saya mencoba mengembalikan pemahaman daftar, ia mengembalikan [Tidak, Tidak, ...]. Jika saya hanya mengabaikan sesuatu, bisakah seseorang menunjukkan kesalahan itu? Terima kasih untuk umpan baliknya!
Edit:
Menggunakan algoritma penyortiran Tn. Xcoders, saya dapat mengurangi kode sebanyak 16 byte. Terima kasih untuk bagian itu.
sumber
[2, 5, 3, 7]
. Urutan output penting.sorted(set().union(*map(primefac,l)))
s.append(x) for
->s.append(x)for
,primefac(i)) for
->primefac(i))for
,[]) if
->[])if
Braingolf , 7 byte
Cobalah online!
Oh, lihat, ini pada dasarnya rantai 4 built-in
Penjelasan
sumber
[10,9,8,7,6,5,4,3,2,1]
. - Perintah penting: Anda harus kembali[2, 5, 3, 7]
bukan[2, 3, 5, 7]
.K
hanya membahayakan di sini.APL (Dyalog Extended) , 4 byte SBCS
Cobalah online!
sumber