Tantangan
Misalkan Anda memiliki daftar angka, dan nilai target. Temukan set semua kombinasi angka Anda yang menambahkan hingga nilai target, mengembalikannya sebagai indeks daftar.
Masukan dan keluaran
Input akan mengambil daftar angka (tidak harus unik) dan nomor penjumlahan target. Keluaran akan menjadi satu set daftar yang tidak kosong, masing-masing daftar berisi nilai integer yang sesuai dengan posisi nilai-nilai dalam daftar input asli.
Contohnya
Input: values = [1, 2, 1, 5], target = 8
Output: [ [0,1,3], [1,2,3] ]
Input: values = [4.8, 9.5, 2.7, 11.12, 10], target = 14.8
Output: [ [0,4] ]
Input: values = [7, 8, 9, -10, 20, 27], target = 17
Output: [ [1,2], [0,3,4], [3,5] ]
Input: values = [1, 2, 3], target = 7
Output: [ ]
Mencetak gol
Ini kode-golf , jadi kode terpendek menang!
code-golf
permutations
soapergem
sumber
sumber
Jawaban:
Sekam , 10 byte
1-diindeks. Cobalah online!
Penjelasan
Ini menggunakan tambahan terbaru untuk Husk,
η
(bertindak berdasarkan indeks). Idenya adalah yangη
mengambil fungsi urutan yang lebih tinggiα
(di sini fungsi lambda inline) dan daftarx
, dan memanggilα
fungsi pengindeksanx
(yang ada⁰
dalam program di atas) dan indeksx
. Misalnya,ṁ⁰
ambil subset indeks, petakan indeks untukx
mengatasinya dan jumlah hasilnya.sumber
JavaScript (ES6), 96 byte
Mengambil input dalam sintaks currying
(list)(target)
.Uji kasus
Ini akan gagal pada test case ke-2 jika 4.8 dan 10 ditukar karena kesalahan presisi IEEE 754 - yaitu
14.8 - 4.8 - 10 == 0
tetapi14.8 - 10 - 4.8 != 0
. Saya pikir ini baik-baik saja , meskipun mungkin ada referensi yang lebih relevan di suatu tempat di meta.Tampilkan cuplikan kode
Berkomentar
sumber
reduce
? Saya harus memperbaiki ini.Python 2 , 110 byte
Cobalah online!
sumber
R ,
8584 byteCobalah online!
1-diindeks.
combn
biasanya mengembalikanmatrix
, tetapi pengaturansimplify=F
mengembalikanlist
sebaliknya, memungkinkan kami untukc
menggabungkan semua hasil bersama-sama.combn(I,i,,F)
mengembalikan semua kombinasi indeks, dan kami mengambilN(l,i,sum)==k
sebagai indeks ke dalam daftar itu untuk menentukan yang mana yang samak
.sumber
J ,
3231 byteCobalah online!
sumber
4 :'<@I.t#~x=1#.y#~t=.#:}.i.2^#y'
. Cobalah online!Japt , 14 byte
Uji secara online!
Bagaimana itu bekerja
sumber
m,
. Saya memilikiÊo à k@VnXx@gX
untuk jumlah byte yang sama.Bersih ,
10410298 byteCobalah online!
sumber
[1, 2, -1, 5] 0 --> [[],[2,0]]
Diperlukan satu set daftar yang tidak kosong.Haskell , 76 byte
Cobalah online!
sumber
[1, 2, -1, 5]#0 --> [[],[0,2]]
Diperlukan satu set daftar yang tidak kosong.Jelly , 11 byte
Cobalah online!
1-diindeks. 4 byte yang dihabiskan untuk mengembalikan indeks daripada hanya elemen itu sendiri.
Terima kasih -1 byte ke user202729
-1 byte terima kasih kepada Jonathan Allan
sumber
⁴
perlu jika Anda menggunakanç
daripadaÇ
.Bahasa Wolfram (Mathematica) , 43 byte
1-diindeks.
Cobalah online!
sumber
Python 3 , 144 byte
Cobalah online!
Diindeks 0. 44 byte dihabiskan untuk mengembalikan indeks daripada hanya elemen itu sendiri.
sumber
Brachylog ,
1815 byteCobalah online!
-3 byte karena sekarang berfungsi sebagai generator . (Mungkin dimungkinkan untuk bermain golf lebih banyak, tetapi mengatasi kebutuhan untuk menggunakan indeks adalah canggung.)
sumber
hiᶠ⊇z+ʰXh~t?∧Xt
keluar dengan panjang yang sama.Perl 6 , 45 byte
Menguji
Diperluas:
sumber
APL (NARS), 49 karakter, 98 byte
1-diindeks; uji:
komentar:
sumber
Pyth, 11 byte
Coba online di sini , atau verifikasi semua uji sekaligus di sini .
sumber