Tantangan Anda hari ini adalah mengambil array, membaginya menjadi potongan-potongan, dan menambahkan potongan-potongan itu.
Begini cara kerjanya: Program atau fungsi Anda akan diberi array bilangan bulat a
dan ukuran chunk L
. Array harus dibagi menjadi array ukuran L
, jika panjang array tidak dapat dibagi pada L
saat itu maka array harus ditambahkan ke 0 sehingga terbagi rata. Setelah array dipotong, semua potongan harus ditambahkan bersama elemen-bijaksana. Array yang dihasilkan kemudian output.
Anda dapat menganggap L
lebih besar dari 0, dan itu a
adalah kosong. Anda tidak dapat membuat asumsi bahwa a
isinya positif.
Ini sebuah contoh:
[1,2,3,4,5,6,7,8], 3 => [1,2,3]+[4,5,6]+[7,8,0] => [1+4+7,2+5+8,3+6+0] => [12,15,9]
Kasus uji:
Array Length Output
[1] 1 [1]
[1] 3 [1,0,0]
[0] 3 [0,0,0]
[1,2] 3 [1,2,0]
[1,2] 1 [3]
[-1,1] 2 [-1,1]
[-7,4,-12,1,5,-3,12,0,14,-2] 4 [12,-1,0,1]
[1,2,3,4,5,6,7,8,9] 3 [12,15,18]
Ini adalah kode-golf , byte terkecil menang!
Jawaban:
MATL , 4 byte
Cobalah online!
Bit kode MATL pertama yang saya tulis! Mengambil dua input,
a
sebagai vektor baris (dipisahkan koma) danl
sebagai angka. Berhasilsumber
Python 3 ,
676542 byteMenggunakan fakta bahwa jumlah array kosong adalah 0
Cobalah online!
sumber
Jelly ,
76 byteTerima kasih 1 byte untuk Dennis.
Cobalah online!
sumber
Ż¡sS
(setara dengan0;$¡sS
).Java 7, 86 byte
Tidak ada lipatan mewah atau matriks, hanya
for
loop mode ol yang baik :)Cobalah di Ideone
Berjajar:
sumber
Python 2 , 49 byte
Cobalah online!
sumber
JavaScript (ES6), 51 byte
Mengambil input dalam sintaks currying:
f([1,2])(3)
.Uji Kasus
Tampilkan cuplikan kode
sumber
(a,n,o=[])=>a.map((v,i)=>o[i%n]=~~o[i%n]+v)&&o
a=>n=>a.map((v,i)=>o[i%=n]=~~o[i]+v,o=[])&&o
tetapi tidak menambah padding-nol yang diperlukan.f=
harus menjadi bagian dari jumlah karakter Anda.f=
tidak diperlukan. Inilah satu posting di meta tentang ini.Mathematica, 27 byte
Mathematica hampir memiliki builtin untuk iniCobalah di Wolfram Sandbox
Pemakaian
Penjelasan
sumber
Mathematica, 58 byte
Memasukkan
Keluaran
sumber
Perl 6 , 36 byte
Menguji
Diperluas:
sumber
APL (Dyalog) , 22 byte
Dibawa
l
sebagai argumen kiri dana
argumen kanan.Cobalah online!
{
...}
fungsi anonim di mana⍺
argumen kiri (l
) dan⍵
argumen kanan (a
).≢⍵
penghitungan (panjang) daria
⍺÷⍨
dibagi denganl
⌈
langit-langit (bulat)⍺,⍨
menambahkanl
s←
simpan dis
(untuk s hape)×/
produk itu (yaitu berapa banyak bilangan bulat yang dibutuhkan)⍵↑⍨
ambil banyak bilangan bulat daria
(padding dengan nol)s⍴
r eshape untuk dibentuks
(baris, kolom)+⌿
jumlah kolomsumber
Haskell ,
5949 byteCobalah online!
sumber
Perl 6 , 40 byte
Cobalah online!
Jika Anda suka nomor 42, Anda dapat menukar
*
untuk∞
. Itu akan membuatnya menjadi 42 byte :—).Penjelasan :
Keajaiban di balik "tambah" terakhir adalah bahwa operator adalah "kurangi dengan zip dengan +". Ngomong-ngomong, ini akan rusak jika kita menggunakannya hanya pada daftar dengan 1 daftar di dalamnya, tetapi itu tidak pernah terjadi jika daftar asli tidak kosong (karena baris kedua-ke-terakhir). Perhatikan juga bahwa kita akhirnya mengambil tidak hanya barang
@a
, tetapi juga@a * $l
barang. Untungnya kami hanya menambahkan nol yang tidak akan memengaruhi hasil akhir.sumber
Sekam , 9 byte
Cobalah online!
Penjelasan
sumber
Pyth , 8 byte
Coba di sini!
Pyth , 10 byte
Coba di sini!
Penjelasan
Penjelasan # 1
Penjelasan # 2
sumber
sM.TcEQ
[1], 3
, yang akan memberi[1]
bukannya[1, 0, 0]
.J ,
1512 byteCobalah online!
Penjelasan
sumber
[:+/-@[[\]
:?05AB1E , 8 byte
Cobalah online!
sumber
05AB1E , 8 byte
Cobalah online!
sumber
¹
vs²
)SOGL V0.12 , 14 byte
Coba Di Sini! atau Coba semua test case. ini ditulis sebagai fungsi yang tidak disebutkan namanya dan mengharapkan
chunk length; array
pada stack.Penjelasan:
sumber
F
kode Coba di Sini yang Anda tautkan?f=a=>a+2
yangf=
sebagian tidak dihitung - di SOGLF\n
tidak dihitung.05AB1E , 12 byte
Cobalah online!
Penjelasan
sumber
Mathematica, 43 byte
sumber
Clojure , 42 byte
Cobalah online!
sumber
R ,
6257 byte-5 byte terima kasih kepada user2390246
Cobalah online!
Diperbarui karena tidak lagi harus menangani kasing kosong.
bantalan
a
dengan nol, membangun matriksl
baris, dan menghitung dan mengembalikan jumlah baris.sumber
Ditumpuk , 24 byte
Cobalah online!
Penjelasan
sumber
Java (OpenJDK 8) , 64 byte
Cobalah online!
sumber
Japt , 7 byte
Sobat, saya bertarung dengan metode Japt yang salah terlalu lama mencoba membuatnya bekerja untuk
[1], 3
kasus uji dalam jumlah byte yang wajar!Cobalah
Penjelasan
Input implisit dari array
U
dan integerV
.Buat array bilangan bulat dari
0
keV-1
dan melewati masing-masing melalui fungsi denganX
menjadi elemen saat ini.Raih setiap
V
elemen dariU
, mulai dari indeksX
.Kurangi array itu dengan tambahan.
sumber
C, (GCC)
10186 BytesCobalah online!
Pemakaian
Perhatikan bahwa Anda harus memasukkan panjang array dan array dinamis baru pada heap (m).
sumber
PowerShell , 62 byte
Cobalah online!
Kami mengambil input
$a
rray dan$l
ength. Kemudian putar dari1
ke$l
. Setiap iterasi yang kita atur helper$y
menjadi kurang dari angka saat ini (ini karena PowerShell 0-indeks tetapi$l
ength dalam 1-indexing). Kemudian kita atur$o
utput kita ke0
dan loop lagi ke$l
. Setiap iterasi bagian dalam kita terakumulasi menjadi elemen rray yang$o
diindeks dengan tepat$a
. Ini memanfaatkan fakta bahwa pengindeksan melewati akhir array akan kembali$null
dan0 + $null = 0
.Setelah loop dalam selesai, kami output
$o
dan beralih ke potongan berikutnya. Berbagai output dibiarkan pada pipa dan output melalui implisitWrite-Output
terjadi pada penyelesaian program.sumber
Perl 5 , 44 + 1 (-a) = 45 byte
Cobalah online!
Sunting: memperbaiki case di mana panjang yang diminta lebih kecil dari array input
sumber
Sekam , 10 byte
Cobalah online!
Tidak Terikat / Penjelasan
sumber
Scala 2.12.2 , 80 byte
Ini sedikit lebih pendek dari solusi Java.
sumber