আন্তঃদেশীয় গড়


26

কার্য

প্রদত্ত (যে কোনও উপায়ে) বাছাই করা ভাসমান পয়েন্ট ডেটাসেট, প্রত্যাবর্তন (যে কোনও উপায়ে এবং সঠিক মানের 1% এর মধ্যে) আন্তঃআকেন্দ্রীয় গড়

একটি সম্ভাব্য অ্যালগরিদম

  1. ডেটা পয়েন্টগুলির সর্বনিম্ন এবং সর্বোচ্চ কোয়ার্টার বাতিল করুন।
  2. অবশিষ্ট ডেটা পয়েন্টগুলির গড় (গণনা দ্বারা বিভাজক) গণনা করুন।

দ্রষ্টব্য: যদি ডেটাসেটের আকারটি চারটি সমানভাবে বিভক্ত-সক্ষম না হয়, আপনাকে উপ-সেট দ্বারা ভাগ করা ডেটাপয়েন্টগুলি ওজন করতে হবে । দেখুন উদাহরণ মূল্যায়ন 2 থেকে কম।

উদাহরণ মূল্যায়ন 1

প্রদত্ত {1, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 38}

  1. ডেটা গণনা 12, সুতরাং আমরা সর্বনিম্ন এবং সর্বোচ্চ 3 ডেটাপয়েন্টগুলি সরিয়ে ফেলি:
    { 1, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 38 }
  2. অবশিষ্ট 6 টি ডেটাপয়েন্টের গড়:
    (5 + 6 + 6 + 7 + 7 + 8) / 6 = 6.5

উদাহরণ মূল্যায়ন 2

প্রদত্ত {1, 3, 5, 7, 9, 11, 13, 15, 17}

  1. গণনা 9, সুতরাং প্রতিটি ত্রৈমাসিকে 2¼ ডেটাপয়েন্ট রয়েছে:
    { 1, 2, (0.25 × 5), (0.75 × 5), 7, 9, 11, (0.75 × 13), (0.25 × 13), 15, 17 }
  2. অবশিষ্ট 4.5 টি ডেটাপয়েন্টের গড়:
    (0.75 × 5 + 7 + 9 + 11 + 0.75 × 13) / 4.5 = 9

উত্তর:


5

সাইলেব, 8 বাইট

trimmean

ডকুমেন্টেশন দেখুন । ডিফল্টরূপে, discard=50তাই আইকিউএম গণনা করা হয়।

সম্পাদনা: আপনি জানেন, এটি একটি তুচ্ছ বিল্ট ইন উত্তর, তাই আমি এটি সিডাব্লু হিসাবে চিহ্নিত করছি ।


আমার ধারণা এটি বিজয়ী হবে। সাবাশ.
অ্যাডম

8

পাইথ , 11 10 বাইট

ণ> <lQS * 4Ql
.OsPtc4S * 4

পরীক্ষা স্যুট.

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

ডেটা গণনাটি 4 দ্বারা বিভাজ্য কিনা তা নিশ্চিত করতে এটি ইনপুট তালিকাটিকে চতুর্ভুজ করে।

এটি এখনও বাছাই করা প্রয়োজন, কারণ *4প্রতিটি পৃথক উপাদানের পরিবর্তে পুরো তালিকার ক্ষেত্রে প্রযোজ্য।

তারপরে, তালিকাটি চারটি সমান অংশে বিভক্ত হয়, তারপরে প্রথম এবং শেষ অংশটি কেড়ে নেয়।

বাকি তালিকা সমতল এবং গড় নেওয়া হয়।


8

এমএটিএল , 12 11 বাইট

4Y"G"6L)]Ym

ফর্ম্যাট সহ ইনপুট একটি অনুভূমিক ভেক্টর

[1, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 38]

অথবা

[1 3 4 5 6 6 7 7 8 8 9 38]

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

ব্যাখ্যা

4Y"    % Input horizontal vector implicitly. Repeat each element 4 times (run-length
       % decoding). The resulting array is still sorted.
G"     % Push input, for each: repeat as many times as the input size
  6L)  %   Remove first and last elements, by applying the index "2:end-1"
]      % End for each
Ym     % Compute mean. Display implicitly

আমি পাই না। 6L)প্রথম এবং শেষ উপাদানগুলি কীভাবে সরিয়ে ফেলবে? যখন আমি এটি করি, এটি জটিল সংখ্যার গুচ্ছকে ধাক্কা দেয়।
ডিজেএমসিএমহেম

5
এমডএল এর জন্য @ ডিগ্রিগ্রিনইগস্যান্ড আইরনম্যান কমপ্লেক্স নম্বরগুলি ব্যবহার করা যেতে পারে। কাল্পনিক ইউনিট অ্যারের শেষ হিসাবে দাঁড়িয়েছে এবং যদি তিনটি সংখ্যার মধ্যে দুটি থাকে তবে তারা একটি ব্যাপ্তি নির্ধারণ করে। সুতরাং [2, -1+i]যখন সূচক হিসাবে ব্যবহৃত হয়2:end-1
লুইস মেন্ডো

7

স্নোম্যান , 66 বাইট

}vg","aS:10sB;aM4aRAsOal`,4nD,`aG0AaGal`NdE`AaL1AfL:nA;alaF,nDtSsP

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

@LeakyNun এর উত্তর হিসাবে একই অ্যালগরিদম ব্যবহার করে ।

}         enable variables b, e, and g
vg        read a line of input into b
","aS     split on commas (in-place)
:10sB;aM  convert each element in resulting array to number ("frombase(10)-map")
4aR       repeat the array 4 times
AsO       sort the array
al        take the length and put it in e without consuming b (the array)
`,        swap b and e, then move e to g; now b=length g=array
4nD       divide b by 4 (4 was stored in e, which is why the array was moved)
,`        move the array and length/4 back to their original positions
aG        split the array into groups of length (length/4)
0AaG      take all elements with index >0 (i.e. remove the first element)
al        store the length of the new array in e again
`NdE`     bring it up to b, decrement, and put it back
AaL       take all elements with index <length-1 (i.e. remove last)
1AfL      flatten the array 1 level deep
:nA;      push a block that adds two numbers (to e)
al        store the length of this new array in g
aF        fold b over e (sum the numbers)
,         move g (the length) into e
nD        divide the sum by the length, resulting in the average
tSsP      to-string and print

2
এই ভাষাটি ভয়াবহ দেখাচ্ছে। আমি এটা ভালোবাসি.
মেগো


5

জেলি , 14 13 12 বাইট

x4ṫL '$ ḣLN $ S ÷ LH 
x4ṫLḊḣLN $ এস ÷ এলএইচ
x4œs4ḊṖFS ÷ এলএইচ

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

পরীক্ষা স্যুট.

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

এটি পাইথের আমার উত্তরের অনুবাদ ।


আমি এপিএল-এ 15 টি করতে পারি বলে আমি নিশ্চিত this
অ্যাডম

@ অ্যাডাম দয়া করে আপনার সমাধান পোস্ট করুন (যাতে আমি হাহাকে অনুলিপি করতে পারি)
লিকি নুন



9 মাসেরও বেশি সময় পরে যথেষ্ট সুযোগ রয়েছে, অবশ্যই
লুইস মেন্ডো


4

ব্র্যাচল্যাগ , 21 বাইট

:3jo@4brbcLl/N,L+:N*.

এটি অনলাইন চেষ্টা করুন! বা একাধিক পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা

এটি মূলত @ লিকিউনের পাইথ উত্তর উত্তর অ্যালগরিদম m

:3j      Append 3 copies of the input to itself
o@4      Sort and split in 4 lists of equal length
brb      Remove the head and the tail of the list of lists
cL       Concatenate the 2 sublists into a list L
l/N,     N is the inverse of the length of L
L+:N*.   Output is the product of N and the sum of the elements of L

কেবলমাত্র ছোট কৌশলটি দৈর্ঘ্যের দ্বারা বিভাজন পরিবর্তে দৈর্ঘ্যের বিপরীত দ্বারা গুণিত হয়, কারণ 2 সংখ্যার মধ্যে বিভাজ্যটি পূর্ণসংখ্যা বিভাগ হয়।


3

অক্টাভা , 44 বাইট

@(x)mean(reshape(~~(1:4)'*x,[],4)(:,2:3)(:))

এটি একটি বেনামী ফাংশন সংজ্ঞায়িত করে।

ইনপুটটি একটি অনুভূমিক ভেক্টর।

আদর্শে এটি চেষ্টা করুন

ব্যাখ্যা

ইনপুট অনুভূমিক ভেক্টরটি *চারটি (যার সাথে নির্মিত ~~(1:4)') একটি কলাম ভেক্টর দ্বারা প্রথম ম্যাট্রিক্স-গুণিত ( ) হয় । ফলাফলটি একটি চার-কলামের ম্যাট্রিক্স যেখানে প্রতিটি সারিটি ইনপুট ভেক্টরের অনুলিপি। এরপরে উপাদানগুলির রৈখিক ক্রম বজায় রেখে এটি পুনরায় আকার দেওয়া হয়, একটি 4-কলামের ম্যাট্রিক্স ( reshape(...,[],4)) এ। কেন্দ্রের দুটি কলামগুলি ( (:,2:3)) রাখা হয়েছে এবং একটি একক কলামে লিনিয়ারাইজ করা হয়েছে ( (:)) যার মধ্যে গড়টি গণনা করা হয় ( mean(...))।


আপনি আরও পাঠযোগ্য 1 বাইট সংরক্ষণ করতে পারবেন [x;x;x;x]পরিবর্তে~~(1:4)'*x
টম ছুতার

@(x)mean([x;x;x;x](:)((b=numel(x))+1:3*b))এছাড়াও 2 বাইট কম। এ কারণেই আমি সামনে এসেছি, তবে এটি আপনার পদ্ধতির মতোই।
টম কার্পেন্টার

@ টমকার্পেন্টার আমার কাছে মনে হয় না যে এটি এরকমই। আমি মনে করি আপনার এটি আলাদা উত্তর হিসাবে পোস্ট করা উচিত
লুইস মেন্ডো

3

জে , 20 18 বাইট

2 মাইল @ মাইল ধন্যবাদ

# -।। @% ~ - @ + # / @} #} 4 #]
- @ # (+ + /% #) @} #} 4 #]।।

এটি অনলাইন চেষ্টা করুন! ( অনলাইন দোভাষী )

ব্যবহার

>> f =: -@#(+/%#)@}.#}.4#]
>> f 1 3 5 7 9 11 13 15 17
<< 9

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

এটি পাইথের আমার উত্তরের অনুবাদ ।



@ অ্যাডম ধন্যবাদ, যোগ করা হয়েছে।
লিকি নুন

2
আপনি কেবল 18 বাইটের-@#(+/%#)@}.#}.4#] জন্য সরাসরি মধ্যম অংশের গড় নিতে পারেন ।
মাইল

2

আসলে , 20 15 13 বাইট

; l╗; +; + S╜ @ t╜τ @ HΣ╜τ @ / 
; l;;; এ; +
; ঠ; τ; aττStHΣ /

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

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

এটি পাইথের আমার উত্তরের অনুবাদ ।


একবারের জন্য, আসলে উত্তর যা পাঠযোগ্য (গ্রীক ভাষায়)।
অ্যাডম

@ অ্যাডম পাইথ ASCII ব্যবহার করে।
লিকি নুন

2

অক্টাভা, 42 বাইটস

অষ্টাভের জন্য আর একটি বেনামি ফাংশন।

@(x)mean([x;x;x;x](:)((b=numel(x))+1:3*b))

আপনি এটি অনলাইনে চেষ্টা করতে পারেন । কেবলমাত্র সেই আদেশটি প্রবেশ করান, এবং তারপরে ans([1 2 4 5 6 9])যা যা সংখ্যার প্রয়োজন হবে তা করুন।

এইটি ইনপুট অ্যারে থেকে প্রতিটি ইনপুট উপাদানগুলির 4 টি দিয়ে প্রথমে চারটি অনুলি উল্লম্বভাবে তৈরি করে এবং পরে এটি উল্লম্বভাবে সমতল করে শুরু হয় ten এটি সাজানোর ক্রম বজায় রাখে।

তারপরে ইনপুট অ্যারে প্লাস 1 এবং ইনপুট অ্যারের দৈর্ঘ্যের তিনগুণ থেকে উপাদানগুলির ব্যাপ্তি বের করা হয়। নতুন অ্যারে চারগুণ বেশি হওয়ায় এই উপরের এবং নীচের ভাগের অংশগুলি ছড়িয়ে পড়ে।

অবশেষে নতুন অ্যারের গড় ফিরে আসে।



2

এপিএল (ডায়ালগ) , 15 বাইট

IQM←(+/÷≢)≢↓-∘≢↓4∘/

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

4∘/ প্রতিটি উপাদানকে চতুর্ভুজ করুন

-∘≢↓ আর্গুমেন্টে উপাদান রয়েছে যতগুলি ট্রেলিং উপাদান ছেড়ে দিন

≢↓ আর্গুমেন্টে উপাদান থাকা হিসাবে অনেক নেতৃস্থানীয় উপাদান ড্রপ করুন

() নিম্নলিখিত সূক্ষ্ম ফাংশন প্রয়োগ করুন:

+/ যোগফল

÷ দ্বারা বিভক্ত

 ট্যালি


1

জাভাস্ক্রিপ্ট (ES6), 75 বাইট

a=>a.concat(a,a,a).sort(g=(x,y)=>x-y).slice(l=a.length,-l).reduce(g,0)/l/-2

সুস্পষ্ট চতুষ্কোণ এবং সারণি পদ্ধতির ব্যবহার করে এবং আমি ব্যবহার করতে পারি reduce, যা দুর্দান্ত। এখানে একমাত্র কৌশলটি হল শূন্য থেকে সমস্ত অ্যারে উপাদানগুলি বিয়োগ করতে বাছাইকারী তুলনামূলককে পুনরায় ব্যবহার করে 4 বাইট সংরক্ষণ করা, যা আমাকে -2lচাইবার উত্তর দেয় times



1

আসলে, 12 বাইট

4α;l¼≈;±(Htæ

এটি অনলাইন চেষ্টা করুন! (বর্তমানে কাজ করে না কারণ টিআইও কয়েকটি সংস্করণ পিছনে রয়েছে)

ব্যাখ্যা:

4α;l¼≈;±(Htæ
4α            repeat each element 4 times
  ;l¼≈        length divided by 4, as integer
      ;±      copy, unary negate
        (Ht   remove first and last quartiles
           æ  mean

1

গণিত, 51 বাইট

Mean@#[[(l=1+Length@#/4);;-l]]&@Sort@Join[#,#,#,#]&

তালিকার চারটি অনুলিপি বাছাই করুন (তালিকাটির দৈর্ঘ্যের চারটি গুণক নয় এমন সমস্যাগুলি প্রতিরোধে) এর "1 quarter the length of resulting list plus 1"মাধ্যমে অংশ "1/4 length list + 1 from the end"নেয়, তাদের নেয় Mean


1

জাভা 146 126 বাইট

এমন জাভা অনেক ভার্বোস!

float m(float[]n){float r=0;int l=n.length,i=l/4;r-=(n[i])*(l%4)/4;r+=n[i*3]*(4-(l%4))/4;for(;i<l*3/4;r+=n[i],i++);return r/l*2;}

পুরানো আনগল্ফড পরীক্ষার ক্ষেত্রে আংশিকভাবে পাঠযোগ্য

/**
 *
 * @author rohan
 */
public Golf{

float m(float[]n){
//declarations 
float r=0;
int x,i=0,l=n.length;
//sum the array 
for(float m:n){r+=m;}
//remove the excess
for(;i<l/4;r-=n[i]+n[l-i-1],i++);
//weight the quartiles
r-=(n[l/4]+n[l*3/4])*(l%4)/4;
//return the sum/length but multiply by two since only half of the set is averaged
return r/l*2;
    }
static void interQuartileMean(float... set){
    System.out.println(new Golf().m(set));
}
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
    //test cases pass with flying colours
        interQuartileMean(1, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 38);
        interQuartileMean(1, 3, 5, 7, 9, 11, 13, 15, 17);   
    }

}

1

ক্লোজার, 82 81 বাইট

সম্পাদনা করুন: "বাই ডি এন 2 অংশ" পুনরায় লিখে 1 বাইট কম।

#(let[n(count %)](*(/ n)0.5(apply +(subvec(vec(for[i % j(range 4)]i))n(* 3 n)))))

আগে:

#(let[n(count %)](/(apply +(subvec(vec(for[i % j(range 4)]i))n(* 3 n)))(* 2.0 n)))

ব্যবহার for4 পুনরাবৃত্তি মান জেনারেট করতে, ভাসা ব্যবহার 2.0ভগ্ন ফলাফল না, বাকি শুধু মান।


1

আর, 17 11 বাইট

mean(n,0.25)

ধরে নেওয়া nহচ্ছে স্ট্যান্ডার্ড আর ফর্মের ইনপুট ভেক্টর n=c(1, 2, 3, ...)

এটি কোনওভাবেই আশ্চর্যজনক নয় যেহেতু আর "স্ট্যাটিস্টিকাল কম্পিউটিংয়ের ভাষা" হিসাবে বিবেচিত হতে পারে এবং এর অনেকগুলি পরিসংখ্যানিক বিল্ট-ইন রয়েছে।

হালনাগাদ. রার্টনবুলকে 6 বাইট সংরক্ষণ করা কারণ trimডিফল্টরূপে প্রথম optionচ্ছিক যুক্তি!

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

a <- c(1, 3, 4, 5, 6, 6, 7, 7, 8, 8, 9, 38)
b <- c(1, 3, 5, 7, 9, 11, 13, 15, 17)
mean(a,trim=0.25) # Returns 6.5
mean(b,trim=0.25) # Returns 9

যেহেতু trimডিফল্ট দ্বিতীয় যুক্তি, আপনার এটির নামকরণ করার দরকার নেই; বা 0.25সংক্ষিপ্ত করা যেতে পারে । এটি আপনাকে ছয়টি বাইট সংরক্ষণ করে। .251/4
rturnbull

0

এক্সেল, 17 বাইট

=TRIMMEAN(A:A,.5)

স্বচ্ছন্দ ইনপুট ফর্ম্যাট এটি সহজ করে তোলে। কলাম এ সারিতে প্রতি এক ইনপুট করুন A.

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