Katakanlah array ini adalah berapa banyak press-up yang saya capai setiap hari dalam 28 hari terakhir:
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
Seperti yang Anda lihat, ini mengambil tren kenaikan yang tajam pada minggu lalu, dan itulah bagian dari data ini yang paling saya minati. Semakin jauh di masa lalu, semakin sedikit yang saya inginkan agar data ditampilkan dalam rata-rata saya 'Jumlah press-up.
Untuk itu, saya ingin mencari 'rata-rata' di mana setiap minggu bernilai lebih dari minggu sebelumnya.
Informasi latar belakang, bukan bagian dari masalah ini.
Rata-rata normal:
Jumlah semua nilai / jumlah nilai
Untuk di atas:
1440/28 = 51.42857142857143
Rata-rata tertimbang:
Membagi array menjadi 4 kelompok 7, dan memulai array baru.
- Tambahkan grup pertama ke array.
- Tambahkan grup kedua ke array dua kali.
- Tambahkan grup ketiga ke array tiga kali.
- Tambahkan grup keempat ke array empat kali.
Jumlahkan semua array baru, dan bagi dengan panjang array baru .
Untuk di atas:
Konversi array menjadi ini:
[
20,20,20,30,30,30,30, # first week once
35,35,40,40,40,45,45,
35,35,40,40,40,45,45, # second week twice
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50, # third week thrice
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120,
60,70,80,90,100,110,120 # Fourth week four times
]
Kemudian jalankan rata-rata normal pada array itu.
4310/70 = 61.57142857142857
Perhatikan bahwa ini lebih tinggi dari nilai rata-rata normal karena tren kenaikan dalam minggu terakhir.
Aturan:
- Input adalah array datar dari 28 bilangan bulat non-negatif.
- Bahasa apa pun yang ingin Anda tulis.
- Keluarkan angka.
- Saya selalu suka melihat tautan TIO .
- Cobalah untuk memecahkan masalah dalam jumlah byte terkecil.
- Hasilnya harus menjadi desimal akurat untuk setidaknya 4 tempat desimal (baik terpotong atau dibulatkan dari nilai-nilai kasus uji baik-baik saja) atau fraksi yang tepat.
Kasus uji:
Kasus 1: Tren naik
[
20,20,20,30,30,30,30,
35,35,40,40,40,45,45,
50,50,50,50,50,50,50,
60,70,80,90,100,110,120
]
Rata-rata normal: 51.42857142857143 Rata-rata tertimbang: 61.57142857142857
Kasus 2: Meninggalkan jeda di belakang
(Saya mengalami minggu yang buruk, tapi itu beberapa waktu yang lalu)
[
50,50,50,50,50,50,50,
10,10,10,10,10,10,10,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50
]
Rata-rata normal: 40 Rata-rata tertimbang: 42
Kasus 3: Menyerah
Saya mengalami minggu yang buruk, ini menurunkan rata-rata saya dengan cepat.
[
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
50,50,50,50,50,50,50,
10,10,10,10,10,10,10
]
Rata-rata normal: 40 Rata-rata tertimbang: 34
Kasus 4: Rata-rata keluar
Oke, jadi saya hanya bermain-main di sini, saya pikir itu mungkin nilai yang sama untuk rata-rata normal dan tertimbang, tetapi, tentu saja, tidak.
[
60,60,60,60,60,60,60,
30,30,30,30,30,30,30,
20,20,20,20,20,20,20,
15,15,15,15,15,15,15
]
Rata-rata normal: 31.25 Rata-rata tertimbang: 24.0
Masalah bonus:
Kombinasi 28 nilai apa yang akan memiliki rata-rata normal dan rata-rata tertimbang yang sama?
Selamat bermain golf!
sumber
new_avg = α*weekly_sum + (1-α)*old_avg
untuk beberapaα∈(0,1)
0
press-up setiap hari, jadi rata-rata tertimbang saya sama dengan rata-rata normal saya.Jawaban:
Sekam , 6 byte
Cobalah online!
Menggunakan trik yang digunakan Dennis untuk mengalahkan pengajuan Jelly saya. Alih-alih mengulangi setiap potongan N kali, ia mengambil sufiks dari daftar potongan, yang setelah diratakan akan menghasilkan hasil yang sama, kecuali untuk pesanan.
sumber
Python 3 , 38 byte
Cobalah online!
sumber
05AB1E ,
87 byteDisimpan 1 byte berkat Tn. Xcoder
Cobalah online!
Penjelasan
sumber
Jelly , 7 byte
Cobalah online!
Bagaimana itu bekerja
sumber
x"J$
juga denganṫJ
konteks ini. Menarik!R + pryr,
3228 bytedan skor rata-rata yang sama dari minggu ke minggu akan menghasilkan persamaan cara.
Cobalah online!
Disimpan 4 byte dengan menggunakan produk titik terima kasih Giuseppe .
Pure R akan menggunakan dua byte lagi
function
sumber
sum
function(s)weighted.mean(s,rep(1:4,e=7))
weighted.mean
. Senang ketikaR
outgolfPython
.MATL , 10 byte
Cobalah online!
Sudah lama saya tidak mengirimkan jawaban MATL! Kupikir aku mungkin berpartisipasi sebagai bagian dari LOTM Mei 2018 !
Penjelasan:
sumber
K:7Y"*s70/
10 byte juga.Jelly , 9 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Haskell , 35 byte
Bonus: jika
a,b,c,d
jumlah mingguan, rata-rata normal sama dengan iff rata-rata tertimbang:Salah satu solusinya adalah ketika minggu pertama dan terakhir memiliki jumlah yang sama, dan juga minggu kedua dan ketiga memiliki jumlah yang sama, tetapi ada banyak solusi yang tak terhingga jika bisep Anda sanggup melakukannya. Contoh: [15,10,10,10,10,10,520,20,20,25,25,20,20,30,20,20,20,20,20,20,10,10,20,20 , 0,10,10,10]
Cobalah online!
sumber
JavaScript (Node.js) , 49 byte
Cobalah online!
Solusi non generik
JavaScript (Node.js) ,
3936 byteCobalah online!
sumber
a=>a.reduce((s,x,i)=>(I+=d=-~(i/7),s+x*d),I=0)/I
. Dan tip cepat: gunakan<hr>
untuk membuat garis horizontal dalam penurunan harga---
(perlu paragraf sendiri)?Stax , 6 byte
Jalankan dan debug di staxlang.xyz!
Dibongkar (7 byte) dan penjelasan:
sumber
Stax ,
108 byteJalankan dan debug itu
Penjelasan (tidak dikemas):
sumber
$
untuk meratakan jika elemen-elemennya semua bilangan bulat — memeriksa dengan OP sekarang.Oktaf , 33 byte
Cobalah online!
sumber
Arang , 14 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
K4 / K (oK) ,
191614 byteLarutan:
Cobalah online!
Contoh:
Penjelasan:
Evaluasi dilakukan dari kanan ke kiri. Bagilah 7 1s, 7 2s, 7 3s dan 7 4s dengan 70 dibagi dengan input; lalu jumlahkan.
sumber
Excel: 33 byte
(3 byte disimpan dari jawaban @ wernisch dengan menjalankan data pada 2 baris dari A1: N1 dan A2: N2)
Permintaan maaf karena tidak memasukkan ini sebagai komentar. Saya tidak punya cukup reputasi untuk melakukannya.
sumber
Japt ,
11, 10 byteCobalah
Penjelasan
sumber
Triangularity , 49 byte
Cobalah online!
Penjelasan
sumber
Perl 5
-pa
, 28 byteCobalah online!
Input dipisahkan oleh spasi daripada dipisahkan koma.
sumber
$.
tersedia sebagai pengganda sempurna. Tidak perlu$i
APL + WIN, 13 byte
Meminta array sebagai vektor bilangan bulat:
Penjelasan:
sumber
Java 8, 57 byte
Cobalah online.
Penjelasan:
sumber
J , 16 byte
Penjelasan:
Cobalah online!
sumber
Clojure,
4846 byteIni akhirnya lebih pendek dari kombinasi mapcat + subvec.
sumber
TI-Basic, 25 byte
Solusi alternatif, 39 byte
sumber
Ruby , 65 byte
Cobalah online!
sumber
size
properti. Cobalah online!Excel,
3633 byte-3 byte terima kasih kepada @tsh.
Masukkan baris pertama (
A1
keAB1
).sumber
A1:AB1
->1:1
?Julia 0,6 , 27 byte
Cobalah online!
Itu
repeat
panggilan membentuk matriks kolom 28 nilai-nilai, berisi tujuh 1, maka tujuh 2 ini, dll Kami kemudian memindahkannya dengan'
, kemudian melakukan perkalian matriks dengan input (mutiplication implisit di sini). Karena ini merupakan perkalian matriks dari matriks 1x28 dengan matriks 28x1, kita berakhir dengan nilai tunggal, yang merupakan jumlah tertimbang yang kita butuhkan. Bagilah dengan70
mendapatkan rata-rata tertimbang kami.sumber