Diberikan array bilangan bulat a
yang berisi n bilangan bulat, dan bilangan bulat tunggal x
; menghapus jumlah elemen paling sedikit dari a
untuk membuat jumlah a
sama dengan x
. Jika tidak ada kombinasi a
kaleng x
, kembalikan nilai palsu.
Seperti yang ditunjukkan dalam komentar, ini adalah set maksimum dengan jumlah x , maaf otak matematika saya yang lebih rendah. Saya lupa banyak istilah sejak kuliah.
Contoh (Kebenaran):
f([1,2,3,4,5,6,7,8,9,10], 10) = [1,2,3,4]
f([2,2,2,2,2,2,2,2,2], 10) = [2,2,2,2,2]
f([2,2,2,2,-2,-2,-2,-4,-2], -8) = [2,2,-2,-2,-2,-4,-2]
f([-2,-4,-2], -6) = [-4,-2] OR [-2,-4]
f([2,2,2,4,2,-2,-2,-2,-4,-2], 0) = [2,2,2,4,2,-2,-2,-2,-4,-2]
(Tidak berubah)
f([], 0) = []
(Kasus Jumlah-Nol yang Tidak Berubah)
Contoh (Falsy, nilai non-array yang konsisten):
Tidak Mungkin Membuat Kasus: f([-2,4,6,-8], 3) = falsy (E.G. -1)
Zero Sum Case: f([], non-zero number) = falsy (E.G. -1)
- Catatan: nilai apa pun seperti
[-1]
tidak dapat valid untuk falsy, karena ini merupakan output potensial yang sebenarnya.
Aturan:
- Input dapat diambil dalam bentuk array, atau sebagai daftar argumen, yang terakhir atau yang pertama
x
. - Output dapat berupa daftar bilangan bulat yang dibatasi. EG
1\n2\n3\n
atau[1,2,3]
. - Nilai apa pun dapat digunakan sebagai indikator palsu, selain array bilangan bulat.
- Kode Anda harus memaksimalkan ukuran array akhir, pesanan tidak masalah.
- EG Untuk
f([3,2,3],5)
keduanya[2,3]
dan[3,2]
sama-sama valid. - EG Untuk
f([1,1,2],2)
Anda hanya dapat kembali[1,1]
karena[2]
lebih pendek.
- EG Untuk
- Baik jumlah
a
dan nilaix
akan lebih kecil dari2^32-1
dan lebih besar dari-2^32-1
. - Ini adalah kode-golf , kemenangan byte-count terendah.
- Jika ada beberapa subarrays dengan ukuran yang sama yang valid, itu tidak dapat diterima untuk menghasilkan semuanya. Anda harus memilih satu dan mengeluarkan yang itu.
Beri tahu saya jika ini telah diposting, saya tidak dapat menemukannya.
Posting yang saya temukan seperti ini : Terkait tetapi ditutup , ...
sumber
Jawaban:
Brachylog , 8 byte
Cobalah online!
Jawaban Brachylog bulanan. Kembali
false.
jika tidak memungkinkan.Penjelasan
sumber
Python 2 ,
108104 byteCobalah online!
-4 byte, terima kasih kepada Jonathan Allan
Python 2 ,
108106 byteCobalah online!
-2 byte, terima kasih kepada Janathan Frech
sumber
range(-len(a),1)
dan-l
menyimpan 2, tetapilambda a,n:[x for l in range(len(a)+1)for x in combinations(a,l)if sum(x)==n][-1]
menghemat 4.05AB1E , 9 byte
Cobalah online!
sumber
Japt
-h
, 11 byteCobalah online!
sumber
Pyth , 8 byte
8-byter ( Coba! ) - Hanya mengeluarkan satu solusi yang mungkin. Untuk input yang tidak dapat dipecahkan, ia tidak mencetak apa pun ke STDOUT, yang merupakan string kosong, yang secara teknis berbicara falsey dalam Pyth, tetapi menulis ke STDERR. Terima kasih kepada FryAmTheEggman untuk menyarankan ini (mengabaikan STDERR dan berfokus pada output STDOUT saja), sehingga menghemat 1 byte.
9-byter ( Coba! ) - Hanya mengeluarkan satu solusi yang mungkin, yang dibungkus dengan daftar tunggal sebagaimana diizinkan secara default (mis
([1...10], 10) -> [[1,2,3,4]]; ([], 0) -> [[]]
.). Untuk input yang tidak dapat dipecahkan, ia mengembalikan[]
, yang merupakan kesalahan dalam Pyth.10-byter ( Coba! ) - Untuk hasil yang lebih jelas, tanpa menggunakan aturan daftar tunggal dan menggunakan
0
bukan[]
sebagai nilai falsy.Penjelasan
Pertama, kode tersebut menghitung set daftar input (semua kemungkinan sub-koleksi yang dipesan). Kemudian, itu hanya menyimpan koleksi yang jumlahnya sama dengan nomor input. Perlu dicatat bahwa koleksi dihasilkan dari yang terpendek ke yang terpanjang, jadi kami fokus pada yang terakhir. Untuk mendapatkannya:
lst[-1:]
di tempatlst[-1]
untuk kesalahan menghindari dari yang dilemparkan untuk input terpecahkan.sumber
[]
apakah palsu? Rapi. Mengapa Pyth melakukan itu[]
?f([], 0) = []
?Jelly , 7 byte
Cobalah online!
Output diklarifikasi atas TIO.
sumber
Perl 6 ,
3837 byteCobalah online!
Fungsi kari.
sumber
;
perlu?$^x
dengan$_
.)Brachylog , 4 byte
Cobalah online!
Hampir setara dengan Fatalize
h⊇.+~t?∧
, kecuali jauh lebih pendek, berkat fitur komposisi predikat yang menurut riwayat edit referensi adalah pekerjaan yang sedang berlangsung hingga 8 Januari, setelah lebih dari dua bulan.⟨⊇+⟩
adalah sandwich , yang meluas ke{[I,J]∧I⊇.+J∧}
, di mana kawat gigi dalam hal ini tidak relevan karena sandwich itu sendiri.Transformasi yang jauh lebih dramatis dari jawaban Fatalize, yang menggunakan predikat yang sama dengan variabel yang sama tetapi keluar satu byte lebih pendek dari yang diatur secara berbeda:
Brachylog , 7 byte
Cobalah online!
(Juga, jika ada yang ingin melihat sesuatu yang aneh, ubah salah satu garis bawah dalam kasus uji menjadi tanda hubung.)
sumber
Pyth , 14 byte
Cobalah online!
sumber
Bersihkan , 89 byte
Cobalah online!
Menentukan fungsi yang
$ :: Int -> [Int] -> (Maybe [Int])
kembaliNothing
jika tidak ada kombinasi elemen yang tepat, dan(Just [elements...])
sebaliknya.sumber
JavaScript (ES6), 108 byte
Mengambil input sebagai
(array)(n)
. Mengembalikan array ataufalse
.Cobalah online!
sumber
Ini dimulai dari keren dan kecil, tetapi ujung kasus membuat saya. Apa pun yang terjadi, saya bangga dengan pekerjaan yang saya lakukan ini.
Python 3 ,
169 161154 byteCobalah online!
sumber
range(x)
menghasilkan(0...x-1)
? Jadi Andarange(len(a))
tidak memberi Anda kemungkinan membiarkan array tidak berubah?if a==[] and x==0
digunakanif sum(a)==x
. Kemudian Anda juga dapat menghapus+1
darirange
.R ,
10080 byteCobalah online!
20 byte disimpan berkat digEmAll
Pengembalian
FALSE
untuk kriteria yang tidak mungkin.sumber
Attache , 28 byte
Cobalah online!
Alternatif
34 byte :
f[x,y]:=({y=Sum@_}\Radiations@x)@0
30 byte :
First@${y&`=@Sum\Radiations@x}
29 byte :
{(_&`=@Sum\_2)@0}#/Radiations
29 byte :
${({y=Sum@_}\Radiations@x)@0}
29 byte :
`@&0@${y&`=@Sum\Radiations@x}
29 byte :
{_}@@${y&`=@Sum\Radiations@x}
Penjelasan
sumber
APL (NARS), 65 karakter, 130 byte
↓ digunakan karena elemen pertama dari set set akan menjadi satu set kosong (di sini ⍬ Zilde), yang ingin dihilangkan karena tampaknya + / ⍬ adalah nol ...
Karena tidak menemukan, atau kesalahan itu akan mengembalikan ⍬ atau dalam teks cetak:
uji:
sumber