ভারী গড় - প্রেসআপ ট্রেন্ড সমস্যা


10

ধরা যাক যে এই অ্যারেটি হ'ল গত 28 দিনের মধ্যে আমি প্রতিদিন কতগুলি প্রেস-আপ অর্জন করেছি:

[
  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
]

আপনি দেখতে পাচ্ছেন, গত সপ্তাহে এটি একটি খাড়া upর্ধ্বমুখী প্রবণতা নিয়েছে, এবং এটিই আমি এই ডেটাটির অংশের মধ্যে সবচেয়ে বেশি আগ্রহী the 'প্রেস-আপ সংখ্যা।

সে লক্ষ্যে, আমি একটি 'গড়' নিয়ে কাজ করতে চাই যেখানে প্রতি সপ্তাহ আগের সপ্তাহের চেয়ে বেশি।


পটভূমি তথ্য, এই সমস্যার অংশ নয়।

সাধারণ গড়:

সমস্ত মানের সমষ্টি / মানগুলির সংখ্যা

উপরের জন্য:

1440/28 = 51.42857142857143


ওজন গড়:

অ্যারের 7 টি গ্রুপে বিভক্ত করুন এবং একটি নতুন অ্যারে শুরু করুন।

  • অ্যারেতে প্রথম গ্রুপ যুক্ত করুন।
  • অ্যারেতে দ্বিতীয় গ্রুপটি যুক্ত করুন।
  • তৃতীয় গ্রুপটি তিনবার অ্যারে যুক্ত করুন।
  • অ্যারেতে চতুর্থ গ্রুপটি চারবার যুক্ত করুন।

দৈর্ঘ্য দ্বারা নতুন অ্যারের সব, এবং ডিভাইড সারাংশ নতুন অ্যারে।

উপরের জন্য:

অ্যারেটিকে এতে রূপান্তর করুন:

[
  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
]

তারপরে সেই অ্যারেতে স্বাভাবিক গড় চালান।

4310/70 = 61.57142857142857

নোট করুন যে গত সপ্তাহে theর্ধ্বমুখী প্রবণতার কারণে এটি স্বাভাবিক গড় মানের থেকে বেশি।


নিয়ম:

  • ইনপুটটি হ'ল 28 অণুগঠিত পূর্ণসংখ্যার সমতল অ্যারে।
  • আপনি যে কোনও ভাষায় লিখতে চান
  • একটি নম্বর আউটপুট।
  • আমি সবসময় টিআইও লিঙ্ক দেখতে পছন্দ করি ।
  • সবচেয়ে কম সংখ্যক বাইটে সমস্যাটি সমাধান করার চেষ্টা করুন।
  • ফলাফলটি কমপক্ষে 4 দশমিক স্থানে দশমিকের সঠিক হওয়া উচিত (পরীক্ষার কেস মান থেকে ছাঁটাই বা গোল করা হয়) বা সঠিক ভগ্নাংশ।

পরীক্ষার কেস:

কেস 1: wardর্ধ্বমুখী প্রবণতা

[
  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
]

সাধারণ গড়: 51.42857142857143 ওজন গড়: 61.57142857142857

কেস 2: পিছনে লুল ছেড়ে

(আমার খুব খারাপ সপ্তাহ ছিল, তবে কিছুক্ষণ আগে)

[
  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
]

সাধারণ গড়: 40 ওজন গড়ে: 42

মামলা 3: ছেড়ে দেওয়া

আমার খুব খারাপ সপ্তাহ ছিল, এটি আমার গড়কে দ্রুত গতিতে টানছে।

[
  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
]

সাধারণ গড়: 40 ওজন গড়ে: 34

কেস ৪: গড়পড়তা

ঠিক আছে, তাই আমি এখানে প্রায় খেলছি, আমি ভেবেছিলাম এটি স্বাভাবিক এবং ওজনিত গড়গুলির জন্য একই মান হতে পারে, তবে অবশ্যই তা ছিল না।

[
  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
]

সাধারণ গড়: 31.25 ওজন গড়: 24.0


বোনাস সমস্যা:

২৮ টি মানের সমন্বয় একই সাধারণ গড় এবং ওজন গড় হতে পারে?


শুভ গল্ফিং!



1
আপনি new_avg = α*weekly_sum + (1-α)*old_avgα∈(0,1)
ক্ষতিকারক স্মুথ

2
আমি 0প্রতিদিন প্রেস-আপগুলি করি, তাই আমার ওজন গড় আমার স্বাভাবিক গড়ের সমান।
নীল

@ নীল আপনি ওজনিত গড় সিস্টেম থেকে কোনও উপকার পাবেন না;)
এজেফারাডে

1
ওভারট্রেন না
ব্রায়ান এইচ।

উত্তর:


3

কাস্তে , 6 বাইট

AΣΣṫC7

এটি অনলাইন চেষ্টা করুন!

কৌতুক ব্যবহার ডেনিস ব্যবহৃত আমার জেলি জমা outgolf করতে। প্রতিটি অংশ এন এর পুনরাবৃত্তি করার পরিবর্তে এটি খণ্ডের তালিকার প্রত্যয়গুলি পুনরুদ্ধার করে, যা চাটুকারের পরে অর্ডার ব্যতীত একই ফলাফল দেয়।



5

05 এ বি 1 ই , 8 7 বাইট

মিস্টার এক্সকোডারকে ধন্যবাদ 1 বাইট সংরক্ষিত

7ô.s˜ÅA

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

7ô         # split list into groups of 7
  .s       # push suffixes
    ˜      # flatten
     ÅA    # arithmetic mean

পি: @ Mr.Xcoder: ওহ হ্যাঁ, আমি জানতাম আমি একটি গড় ফাংশন দেখেছিলেন, কিন্তু আমি এটা খুঁজে পাইনি
Emigna

4

জেলি , 7 বাইট

s7ṫJFÆm

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

s7ṫJFÆm  Main link. Argument: A (array of length 28)

s7       Split the array into chunks of length 7.
   J     Indices; yield [1, ..., 28].
  ṫ      Tail; yield the 1st, ..., 28th suffix of the result to the left.
         Starting with the 5th, the suffixes are empty arrays.
    F    Flatten the resulting 2D array.
     Æm  Take the arithmetic mean.

হু, তাই এই প্রসঙ্গে x"J$সমান ṫJ। মজাদার!
মিঃ এক্সকোডার 16

প্রকার, রকম. এন- থ্রি অ্যারের উপাদানগুলিকে এন বার পুনরাবৃত্তি করার পরিবর্তে , এটি সমস্ত প্রত্যয় গ্রহণ করে। সমতল করার পরে, এটি একই উপাদানগুলি তৈরি করে, তবে একটি ভিন্ন ক্রমে।
ডেনিস

4

আর + পিআর, 32 28 বাইট

এবং সপ্তাহের তুলনায় একই গড় স্কোর সপ্তাহের মাধ্যমের সমতা হতে পারে।

pryr::f(s%*%rep(1:4,e=7)/70)

এটি অনলাইন চেষ্টা করুন!

পণ্য ধন্যবাদ ডট ব্যবহার করে 4 বাইট সংরক্ষিত : Giuseppe

খাঁটি আর এর ব্যবহারে আরও দুটি বাইট থাকবে function


অবশ্যই এটি হবে, এটি সুস্পষ্ট, এখন আমি এটি সম্পর্কে চিন্তা করি।
এজেফারাডে

1
এর পরিবর্তে ডট পণ্য ব্যবহার করে 28 বাইটsum
জিউসেপে

আমার 40 বাইট ছিলfunction(s)weighted.mean(s,rep(1:4,e=7))
জিউসেপ

1
জিউসেপ ভাগ্যক্রমে আমার মনে পড়েনি weighted.meanRআউটগল্ফ যখন এটি পছন্দ Python
জাইসি 2'18

4

এমএটিএল , 10 বাইট

7es4:*s70/

এটি অনলাইন চেষ্টা করুন!

আমি যুগে যুগে একটি এমএটিএল উত্তর পোস্ট করি নি! ভেবেছি আমি LOTM মে 2018 এর অংশ হিসাবে অংশ নিতে পারি !

ব্যাখ্যা:

7e          % Reshape the array into 7 rows (each week is one column)
  s         % Sum each column
   4:       % Push [1 2 3 4]
     *      % Multiply each columnar sum by the corresponding element in [1 2 3 4]
      s     % Sum this array
       70/  % Divide by 70

আমার K:7Y"*s70/10 টি বাইটও ছিল।
জিউসেপে 22

3

জেলি , 9 বাইট

s7x"J$FÆm

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

s7x "J $ FÆm - প্রথম কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয় এবং STDOUT এ আউটপুট নেয়।
s7 - 7 টি গ্রুপে বিভক্ত করুন।
   "- ভেক্টরাইজড (জিপউইথ) প্রয়োগ করুন:
  x জে $ - প্রতিটি তালিকার উপাদানগুলি তালিকার সূচকের সমান বহুবার পুনরাবৃত্তি করুন।
      এফ - ফ্ল্যাটেন
       --M - পাটিগণিত গড়।

2

হাস্কেল , 35 বাইট

(/70).sum.zipWith(*)([1..]<*[1..7])

বোনাস: যদি a,b,c,dসাপ্তাহিক অঙ্ক হয়, তবে গড় গড় ওজনযুক্ত গড়ের সমান হয় if:

(a + b + c + d)/4 = (a + 2b + 3c + 4d)/10  <=>
10(a + b + c + d) = 4(a + 2b + 3c + 4d)    <=>
5(a + b + c + d)  = 2(a + 2b + 3c + 4d)    <=>
5a + 5b + 5c + 5d = 2a + 4b + 6c + 8d      <=>
3a + b - c - 3d   = 0

একটি সমাধান হ'ল প্রথম এবং শেষ সপ্তাহে একই পরিমাণ হয়, এবং একইভাবে দ্বিতীয় এবং তৃতীয় সপ্তাহের সমান পরিমাণ থাকে তবে আপনার বাইসপস যদি অবধি থাকে তবে অনেকগুলি সমাধান রয়েছে। উদাহরণ: [15,10,10,10,10,10,5,20,20,20,25,25,20,20,30,20,20,20,20,20,20,10,10,20 , 0,10,10,10]

এটি অনলাইন চেষ্টা করুন!


2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 49 বাইট

a=>a.map((x,i)=>(I+=d=-~(i/7),s+=x*d),s=I=0)&&s/I

এটি অনলাইন চেষ্টা করুন!


নন জেনেরিক সমাধান

জাভাস্ক্রিপ্ট (নোড.জেএস) , 39 36 বাইট

a=>a.reduce((s,x,i)=>s+x*-~(i/7))/70

এটি অনলাইন চেষ্টা করুন!


1
ব্যবহার করে প্রথম সমাধানটিতে বাইট করুন a=>a.reduce((s,x,i)=>(I+=d=-~(i/7),s+x*d),I=0)/I। এবং একটি দ্রুত টিপ: <hr>মার্কডাউনতে একটি অনুভূমিক রেখা তৈরি করতে ব্যবহার করুন
হারমান এল

@ হারমানল ব্যবহার করে কী ভুল হয়েছে ---(তার নিজস্ব অনুচ্ছেদে প্রয়োজন)?
নিল


2

স্ট্যাক্স , 10 8 বাইট

äΔ6◙█µøΓ

এটি চালান এবং এটি ডিবাগ করুন

ব্যাখ্যা (প্যাকযুক্ত):

7/4R:B$:V Full program, implicit input
7/        Split into parts of length 7
  4R      Push [1, 2, 3, 4]
    :B    Repeat each element the corresponding number of times
      $   Flatten
       :V Average

1
আরেকজন স্ট্যাক্স ব্যবহার করছে! হ্যাঁ! $উপাদানগুলি সমস্ত পূর্ণসংখ্যার হলে আপনি সমতল করতে ব্যবহার করতে পারেন OP এখন ওপি দিয়ে চেক করা।
খুলনাশেথ না'বাড়িয়া


2

কাঠকয়লা , 14 বাইট

I∕ΣE⪪A⁷×Σι⊕κ⁷⁰

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

     A          Input array
    ⪪ ⁷         Split into subarrays of length 7
   E            Loop over each subarray
         ι      Subarray
        Σ       Sum
           κ    Loop index
          ⊕     Incremented
       ×        Product
  Σ             Sum results
            ⁷⁰  Literal 70
 ∕              Divide
I               Cast to string
                Implicitly print

2

কে 4 / কে (ওকে) , 19 16 14 বাইট

সমাধান:

+/(1+&4#7)%70%

এটি অনলাইন চেষ্টা করুন!

উদাহরণ:

+/(1+&4#7)%70%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
42

ব্যাখ্যা:

মূল্যায়ন ডান থেকে বাম সঞ্চালিত হয়। ইনপুট দ্বারা বিভক্ত 70 দ্বারা 7 1s, 7 2s, 7 3s এবং 7 4s ভাগ করুন; তারপরে যোগফল

+/(1+&4#7)%70% / the solution               
           70% / 70 divided by the input
  (      )%    / the stuff in brackets divided by this...
      4#7      / draw from 7, 4 times => 7 7 7 7
     &         / 'where' builds 7 0s, 7 1s, 7 2s, 7 3s
   1+          / add one
+/             / sum (+) over (/) to get the total

2

এক্সেল: 33 বাইট

(এ 1: এন 1 এবং এ 2: এন 2 থেকে 2 লাইনে ডেটা চালিয়ে @ ওয়ার্নিশের উত্তর থেকে 3 বাইট সংরক্ষণ করা হয়েছে)

=AVERAGE(A1:N2,H1:N2,A2:N2,H2:N2)

এটি একটি মন্তব্য হিসাবে না অন্তর্ভুক্ত জন্য দুঃখিত। এটি করার মতো যথেষ্ট খ্যাতি আমার নেই।



1

ত্রিভুজ্যতা , 49 বাইট

....)....
...D7)...
..14)21..
.WM)IEtu.
}u)70s/..

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

)D7)14)21WM)IEtu}u)70s/ – Full program.
)D7)14)21               – Push the literals 0, 7, 14, 21 onto the stack.
         WM     }       – Wrap the stack to a list and run each element on a separate
                          stack, collecting the results in a list.
           )IEt         – Crop the elements of the input before those indices.
               u        – Sum that list.
                 u      – Then sum the list of sums.
                  )70   – Push the literal 70 onto the stack.
                     s/ – Swap and divide.


1

এপিএল + উইন, 13 বাইট

পূর্ণসংখ্যার ভেক্টর হিসাবে অ্যারের জন্য অনুরোধ:

(+/⎕×7/⍳4)÷70

ব্যাখ্যা:

7/⍳4) create a vector comprising 7 1s, 7 2s, 7 3s and 7 4s

+/⎕× prompt for input, multiply by the vector above and sum result

(....)÷70 divide the above sum by 70

1

জাভা 8, 57 বাইট

a->{int r=0,i=35;for(;i-->7;)r+=i/7*a[i-7];return r/70d;}

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা:

a->{              // Method with integer-array parameter and double return-type
  int r=0,        //  Result-sum, starting at 0
      i=35;       //  Index-integer, starting at 35
  for(;i-->7;)    //  Loop `i` downwards in the range (35,7]
    r+=           //   Add the following to the result-sum:
       i/7        //    `i` integer-divided by 7,
       *a[i-7];   //    multiplied by the item at index `i-7`
  return r/70d;}  //  Return the result-sum, divided by 70.0


1

ক্লোজার, 48 46 বাইট

#(/(apply +(for[i[0 7 14 21]v(drop i %)]v))70)

এটি ম্যাপক্যাট + সাবভেক সংমিশ্রণের চেয়ে সংক্ষিপ্ত হয়ে শেষ হয়েছে।


1

টিআই-বেসিক, 25 বাইট

mean(Ansseq(sum(I>{0,7,21,42}),I,1,70

বিকল্প সমাধান, 39 বাইট

Input L1
For(I,1,70
Ans+L1(I)sum(I>{0,7,21,42
End
Ans/70

1

রুবি , 65 বাইট

->r{(b=(0..r.size/7).map{|a|r[a*7..-1]}.flatten).sum/b.size.to_f}

এটি অনলাইন চেষ্টা করুন!


ইনপুট আকারটি এখানে ২৮-এ স্থির করার জন্য নির্দিষ্ট করা হয়েছে - যাতে আপনি sizeসম্পত্তিটি ব্যবহার না করে মানগুলি হার্ডকোড করে কয়েকটি বাইট সংরক্ষণ করতে পারেন । এটি অনলাইন চেষ্টা করুন!
সূন্দর - মনিকা পুনরায় ইনস্টল করুন

1

এক্সেল, 36 33 বাইট

-৩ বাইটস @ টিএসএকে ধন্যবাদ।

=SUM(1:1,H1:AB1,O1:AB1,V1:AB1)/70

প্রথম সারিতে ইনপুট করুন ( A1থেকে AB1)।


হতে পারে A1:AB1-> 1:1?
tsh

1

জুলিয়া 0.6 , 27 বাইট

p->repeat(1:4,inner=7)'p/70

এটি অনলাইন চেষ্টা করুন!

দ্য repeatকল 28 মূল্যবোধের একটি কলাম ম্যাট্রিক্স ফর্ম, সাত 1 এর, তারপর সাত 2 এর, ইত্যাদি আমরা তখন সঙ্গে এটি জায়গা বদল করুন ধারণকারী ', তারপর ইনপুট দিয়ে একটি ম্যাট্রিক্স গুণ করে (mutiplication এখানে অন্তর্নিহিত যায়)। যেহেতু এটি 28x1 ম্যাট্রিক্সের সাথে 1x28 ম্যাট্রিক্সের একটি ম্যাট্রিক্স গুণমান, তাই আমরা একক মান দিয়ে শেষ করি যা আমাদের প্রয়োজন ওজনযুক্ত যোগফল। 70আমাদের ওজনযুক্ত গড় পেতে এটি ভাগ করুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.