Biarkan menjadi daftar bilangan bulat positif tanpa urutan tertentu, dan yang dapat berisi duplikat. Tulis sebuah program atau fungsi yang menampilkan daftar bilangan bulat positif (yang urutannya tidak penting) sehingga penggabungan dan menghasilkan daftar terkecil yang seluruhnya dapat dibagi menjadi rentang identik bilangan bulat [ 1 .. i ] , di mana i adalah elemen terbesar di LM L M
Contoh
Mari L = [5,3,3,2,7]
. Elemen maksimum L
adalah 7
. Yang paling sering terjadi bilangan bulat spesifik adalah 2
( 3
muncul 2 kali). Oleh karena itu, kita perlu menampilkan daftar M
yang akan memungkinkan untuk menyelesaikan L
sehingga kita dapat membangun 2
rentang bilangan bulat dari 1
ke 7
.
Oleh karena itu, kita perlu output M = [1,1,2,4,4,5,6,6,7]
, sehingga setiap bilangan bulat dari 1
ke 7
muncul 2
kali.
Masukan dan keluaran
- Gunakan apa pun dalam bahasa Anda yang mirip dengan daftar. Struktur data yang digunakan untuk input dan output harus sama.
- Daftar input hanya akan berisi bilangan bulat positif.
- Daftar input tidak akan kosong.
- Anda tidak dapat menganggap daftar input diurutkan.
- Pemesanan dalam daftar output tidak penting.
Uji kasus
Input Output
[1] []
[7] [1, 2, 3, 4, 5, 6]
[1, 1, 1] []
[1, 8] [2, 3, 4, 5, 6, 7]
[3, 3, 3, 3] [1, 1, 1, 1, 2, 2, 2, 2]
[5, 2, 4, 5, 2] [1, 1, 3, 3, 4]
[5, 2, 4, 5, 5] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4]
[5, 3, 3, 2, 7] [1, 1, 2, 4, 4, 5, 6, 6, 7]
Mencetak gol
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
sumber
i
elemen terbesarL
atauM
?i
adalah elemen terbesarL
, itu salah ketik dalam spesifikasi.M=[1,1,2,2,3]
untukL=[3]
sementara "menggabungkan L dan M menghasilkan daftar yang sepenuhnya dapat dibagi menjadi rentang identik bilangan bulat [1..i]"?[1,2]
. Saya akan mengklarifikasi sehingga jelas harus menghasilkan jumlah minimum rentang.Jawaban:
Jelly , 9 byte
Disimpan 1 byte berkat Jonathan Allan . Footer memanggil tautan utama, mengurutkan hasil untuk mencocokkan kasus uji dan memformat output sebagai kisi.
Cobalah online! atau Lihatlah test suite!
Alternatif
Coba salah satunya online!
Penjelasan
sumber
Perl 6 ,
3733 byte-4 byte terima kasih kepada nwellnhof!
Cobalah online!
Blok kode anonim yang mengambil Tas dan mengembalikan Tas nilai.
Penjelasan:
sumber
{^.max+1 xx.Bag.values.max∖.Bag}
{^.keys.max+1 xx.values.max∖$_}
simpan byte lain.R ,
594948 byteCobalah online!
sumber
rep
berbeda, tetapi sebaliknya sama dengan Anda. Saya dapat mempostingnya sendiri tetapi saya tidak berpikir saya akan memikirkannya kecuali saya sudah melihat milik Anda terlebih dahulu. Saya menantang Anda untuk menemukannya!split
tetapitabulate
jauh lebih baik!x=max(L<-scan());rep(1:x,1:x-lengths(split(L,c(L,1:x))))
yang pada pengujian lebih lanjut tidak bekerja untuk kasus uji seperti7
...Python 2 ,
86838072 byteCobalah online!
sumber
05AB1E ,
171617 byte-1 byte terima kasih kepada @ Mr.Xcoder .
+1 byte setelah memperbaiki bug-perbaikan ..
Mungkin saya benar-benar melihat melewatinya, tetapi apakah 05AB1E bahkan memiliki menghapus semua elemen daftar b dari daftar a .. (EDIT: Memang tidak ..) Saya tahu bagaimana menghapus semua beberapa kali, tetapi tidak masing-masing sekali .. (perbedaan multiset)
Pasti bisa main golf. Tidak terlalu senang dengan itu, tbh ..
Akan kulihat apakah aku bisa bermain golf lagi sebelum menambahkan penjelasan.EDIT: Menambahkan penjelasan ..Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
K a,b Push a without b's
:? Oh, tunggu, "masing-masing sekali" ... hmm[1,2,3,4,5,6,7,1,2,3,4,5,6,7]
dan[5,3,3,2,7]
denganK
hasil[1,4,6,1,4,6]
sayangnya. Ini menghapus semua item alih-alih melakukan perbedaan multiset.¢ZIZLŠŠи
harus menyimpan 1 byteR ,
5955 byteDengan menggunakan
vecsets
paket tersebut, kita dapat memberikan sedikit jawaban. Dengangl
kita bisa mendapatkan output yang dipesan. Ini tidak berfungsi di TIO. Mengikuti solusi gaya @ digEmAll (agak pintar) tanpa definisi fungsi, ini dapat dianggap sebagai solusi 55 byte.sumber
f(c(5,3,3,2,7))
JavaScript (ES6), 98 byte
Ini ternyata cukup sulit untuk bermain golf di bawah 100 byte. Mungkin ada pendekatan yang lebih baik.
Cobalah online!
Bagaimana?
Kami pertama kali berjalan melalui array input
a[]
untuk mengumpulkan data berikut:M
= elemen tertinggi yang ditemukan dalam array inputm
= jumlah kemunculan tertinggi dari elemen yang samao[n]
= jumlah kemunculann
Catatan yang
o
terutama didefinisikan sebagai fungsi, tetapi objek yang mendasarinya juga digunakan untuk menyimpan jumlah kejadian.Kami kemudian menggunakan fungsi rekursif
g()
untuk membangun output.sumber
Haskell, 72 byte
Cobalah online!
sumber
Brachylog ,
1817 byteCobalah online!
Disimpan 1 byte berkat @ Kalpeb.
Penjelasan
sumber
⌉
sebagai gantinyaot
Java 10, 186 byte
Cobalah online.
Penjelasan:
sumber
Sekam , 12 byte
Disimpan 1 byte berkat BWO .
Cobalah online!
sumber
MATL ,
2421 byteCobalah online!
sumber
MATL , 14 byte
Input adalah vektor kolom, dengan
;
sebagai pemisah.Cobalah online! Atau verifikasi semua kasus uji (ini ditampilkan
--
setelah setiap output sehingga output kosong dapat diidentifikasi).Penjelasan
Pertimbangkan input
[5; 2; 4; 5; 5]
sebagai contoh.sumber
Pyth , 13 byte
Coba di sini! atau Lihatlah test suite!
sumber
Arang , 19 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Akan menjadi 16 byte jika bilangan bulat non-negatif, bukan positif. Penjelasan:
sumber
APL (Dyalog Classic) ,
1817 byteCobalah online!
menggunakan
⎕io←1
sumber
Prolog (SWI) , 211 byte
Sudah lama sejak saya memprogram di Prolog. Pasti bisa bermain golf lebih lanjut, tapi saya punya ujian untuk belajar hahaha.
Kode
Cobalah online!
Versi tidak disatukan
sumber
Clojure, 94 byte
sumber
C ++, 234 byte
(Baris baru di badan fungsi adalah agar mudah dibaca).
Fungsi ini mengambil dan mengembalikan vektor int. Itu memanfaatkan
std::map
untuk menemukan elemen maks dari daftar input dan juga untuk menghitung kemunculan setiap elemen yang berbeda.Penjelasan:
sumber
Gaia , 12 byte
Cobalah online!
sumber
C (gcc) , 177 byte
Input dan output dilakukan melalui stdin dan stdout. Kedua array dibatasi pada 2 ^ 15 elemen, tetapi mereka bisa sebesar 2 ^ 99 elemen.
Dengan beberapa format:
Cobalah online!
sumber