ফাইভেনাম এবং কিছুটা


14

(একটি প্যারাডক্স, একটি প্যারাডক্স, একটি সবচেয়ে জ্ঞানসম্পন্ন প্যারাডক্স)

এটি বিভিন্ন আর ফাংশন দ্বারা অনুপ্রাণিত একটি মাল্টিপার্ট সিরিজের প্রথম অংশ।

কাজটি

একটি ডেটাসেটের প্রদত্ত ডি ধনাত্মক পূর্ণসংখ্যা এর, আমি তোমাকে গনা প্রয়োজন 5 সংখ্যা সারসংক্ষেপ এর ডি । তবে, আমি বড় ডেটাসেটে কাজ করছি, সুতরাং আপনার কোডটি আমার কম্পিউটারে এটি সঞ্চয় করার অনুমতি দিয়ে যথাসম্ভব ছোট হওয়া দরকার।

পাঁচটি সংখ্যার সংক্ষিপ্তসারটি রয়েছে:

  • সর্বনিম্ন মান
  • প্রথম কোয়ার্টাইল (কিউ 1)
  • মিডিয়ান / সেকেন্ড কোয়ার্টাইল (কিউ 2)
  • তৃতীয় কোয়ার্টাইল (Q3)
  • সর্বোচ্চ মূল্য

কোয়ার্টাইলগুলি সংজ্ঞায়িত করার বিভিন্ন উপায় রয়েছে, তবে আমরা আর দ্বারা প্রয়োগ করা একটি ব্যবহার করব:

সজ্ঞা:

  • সর্বনিম্ন এবং সর্বাধিক: যথাক্রমে সবচেয়ে ছোট এবং বৃহত্তম মান।
  • মধ্যমা: মধ্য মান যদি ডি যদি এন্ট্রির একটি বিজোড় সংখ্যা এবং দুটি মধ্যম সবচেয়ে মূল্যবোধের গাণিতিক গড় রয়েছে ডি এন্ট্রির একটি এমনকি নম্বর আছে। নোট করুন যে এর অর্থ মিডিয়ান একটি অ-পূর্ণসংখ্যার মান হতে পারে। আমাদের আগে মেডিয়ান গণনা করতে হয়েছিল
  • প্রথম ও তৃতীয় ক্যুয়ারটাইলস: দুই অর্ধেক ডেটা ভাগ প্রতিটি অর্ধেক যদি কেন্দ্রীয় উপাদান সহ ডি এন্ট্রির একটি বিজোড় সংখ্যা আছে, এবং প্রতিটি অর্ধেক মধ্যমা মান পাবেন। নীচের অর্ধের মাঝারিটি প্রথম কোয়ারটাইল এবং উপরের অর্ধের মাঝারিটি তৃতীয় কোয়ার্টাইল।

উদাহরণ:

ডি=[1,2,3,4,5] । মিডিয়ানটি তখন3 , এবং নীচের অর্ধেকটি[1,2,3] , প্রথম ফলক2 উত্পন্ন হয়এবং উপরের অর্ধেকটি[3,4,5] ,4 তৃতীয় কোয়ার্টাইল ফলন করে।

ডি=[1,3,3,4,5,6,7,10] । মধ্যমা হয়4.5 , এবং নীচে অর্ধেক হয়[1,3,3,4] , প্রথম কোয়ার্টাইলের ফলনশীল3 এবং উপরের অর্ধেক[5,6,7,10] , এক তৃতীয়াংশ কোয়ার্টাইলের ফলনশীল6.5

অতিরিক্ত নিয়ম:

  • ইনপুটটি অ্যারের হিসাবে বা আপনার ভাষার নিকটতম সমতুল্য।
  • আপনি ধরে নিতে পারেন যে অ্যারেটি আরোহী বা অবতরণ ক্রমে সাজানো হয়েছে (তবে দয়া করে কোনটি নির্দিষ্ট করুন)।
  • আপনি কোনও সামঞ্জস্যপূর্ণ ক্রমে ফলাফলগুলি মুদ্রণ / মুদ্রণ করতে পারেন এবং যে কোনও নমনীয় বিন্যাসে আপনার পছন্দ হতে পারে তবে দয়া করে আপনার উত্তরে ক্রম এবং বিন্যাসটি বোঝান।
  • বিল্ট-ইন ফাংশনগুলির সমতুল্য fivenumঅনুমোদিত, তবে দয়া করে আপনার নিজের সমাধানও প্রয়োগ করুন।
  • আপনি ধরে নিবেন না যে পাঁচটি সংখ্যার প্রত্যেকটিই একটি পূর্ণসংখ্যা হবে।
  • ব্যাখ্যা উত্সাহিত হয়।
  • এটি , তাই প্রতিটি ভাষার মধ্যে সংক্ষিপ্ত উত্তর!

এলোমেলোভাবে পরীক্ষার কেস তৈরি করা হয়

1 1 1 1 1 2 2 2 2 2 3 3 4 4 4 4 4 5 5 5 -> 1 1.5 2.5 4 5 
1 2 2 2 4 4 5 5 6 7 7 8 9 9 9 9 9 10 10 10 -> 1 4 7 9 10 
2 2 2 6 8 10 15 16 21 22 23 24 26 33 35 38 38 45 46 47 48 -> 2 10 23 38 48 
1 2 9 -> 1 1.5 2 5.5 9 
1 2 3 3 3 4 9 -> 1 2.5 3 3.5 9
1 1 2 5 7 7 8 8 15 16 18 24 24 26 26 27 27 28 28 28 29 29 39 39 40 45 46 48 48 48 48 49 50 52 60 63 72 73 79 85 86 87 88 90 91 93 94 95 95 97 100 -> 1 25 45 76 100
2 2 4 4 6 8 10 11 13 14 14 15 17 21 23 24 26 27 27 28 28 30 31 33 33 34 36 36 38 38 39 40 41 42 42 43 45 45 47 47 47 47 47 48 48 48 50 51 53 53 55 56 56 56 57 57 58 62 62 63 64 64 65 65 66 67 67 67 68 69 69 71 71 71 74 79 80 81 81 81 82 82 83 83 86 86 86 87 89 94 94 94 95 95 97 98 99 100 100 100 -> 2 33.5 54 76.5 100
1 3 3 4 -> 1 2 3 3.5 4
1 3 3 3 4 -> 1 3 3 3 4

উত্তর:


6

আর , 7 বাইট

fivenum

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

সুস্পষ্ট চটকদার উত্তর। ;-)

মজার fivenum(x)বিষয় হল, সংখ্যাসূচক summary(x)হলেও সমান নয় x, কারণ কোয়ান্টাইলগুলি পৃথকভাবে গণনা করা হয়: বিরতিতে fivenumগড় গড়ে, যেখানে summaryইন্টারপোলিট হয়। আপনি বিকল্পটির summaryমতো আচরণ করতে বাধ্য করতে পারেন তবে এটি এখনও এর চেয়ে দীর্ঘfivenumquantile.type

আর , 51 বাইট

function(x)quantile(x,(0:4)/4,t=2+5*!sum(!!x)%%4-3)

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

t=2এন3(গেলিক ভাষার4)

মনে রাখবেন যে fivenumঅন্তর্নির্মিতটির উত্স কোডটি খুব আলাদা (এবং আরও দীর্ঘ)।


কেবলমাত্র আমি খুঁজে পেতে পারি এটি quantileনামযুক্ত ভেক্টরকে ফিরিয়ে দেয়, যখন fivenumনামহীন। সম্ভবত এটি fivenumব্যবহৃত হয় যেখানে প্রবাহিত একটি সমস্যা ?
জাদাদ

@ জ্যাড কোড যুক্ত করে unname()এটি সমাধান করবে। Thereতিহাসিক কারণ থাকতে পারে?
রবিন রাইডার

1
আপনার fivenumপরীক্ষার দুটি পরীক্ষার ক্ষেত্রে 3 মাইল 4 দৈর্ঘ্যের ইনপুটগুলির চেয়ে পৃথক ।
নাইট্রডন

@ নাইট্রডন আরগ! দেখার জন্য ধন্যবাদ! এটা এখন ঠিক করা উচিত।
রবিন রাইডার

5

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

tno?t.5Xqh]5:q4/Xq

আউটপুট ক্রম বাড়ছে, পরীক্ষার ক্ষেত্রেও।

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

ব্যাখ্যা

এমএটিএল, ম্যাটল্যাবের মতো, প্রয়োজনে রৈখিক প্রবৃত্তির সাহায্যে কোয়ান্টাইলগুলি গণনা করে (ঠিক মিডিয়ানদের জন্য চ্যালেঞ্জের ক্ষেত্রে নির্দিষ্ট হিসাবে)। প্রথম এবং তৃতীয় ভাগের জন্য প্রয়োজনীয় আচরণ অর্জন করতে, ইনপুটটির দৈর্ঘ্যটি বিজোড় হলে মিডিয়াকে পুনরাবৃত্তি করা যথেষ্ট। তারপরে ফলাফলগুলি কেবল 0, .25, .5, .75 এবং 1 কোয়ান্টাইল।

t       % Implicit input: numeric row array. Duplicate
no      % Length, parity
?       % If not zero (that is, if input length is odd)
  .5    %   Push .5
  Xq    %   .5-quantile: median. For even length it behaves as required
  h     %   Concatenate horizontally
]       % End
5:q     % Push [0 1 2 3 4]
4/      % Divide by 4, element-wise: gives [0 .25 .5 .75 1]
Xq      % [0 .25 .5 .75 1]-quantiles. Implicit display



1

পাইথন 3.8, 97 বাইট

lambda l:[l[0],l[-1]]+[(i[x(i)//2]+i[~x(i)//2])/2for i in(l[:~((x:=len)(l)//2-1)],l,l[x(l)//2:])]

এটি ধরে নিয়েছে যে ইনপুট তালিকাটি ক্রমবর্ধমান ক্রমে সাজানো হয়েছে। f5 সংখ্যা সংক্ষিপ্তসার ফিরে ফাংশন।

5-সংক্ষিপ্তসারটি ক্রমে রয়েছে: {মিআমিএন,মিএকটিএক্স,প্রশ্নঃ1,প্রশ্নঃ2,প্রশ্নঃ3}

আমি মিডিয়া গণনা সম্পর্কে ফ্লিপটকের উত্তর থেকে কিছু ইঙ্গিত নিয়ে কয়েকটা বাইট বন্ধ করেছিলাম

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

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

lambda l:
    [l[0],l[-1]] # The minimum and maximum, because l is assumed to be sorted in ascending order
    +[(i[x(i)//2]+i[~x(i)//2])/2 # This line computes the median...
    for i in(l[:~((x:=len)(l)//2-1)],l,l[x(l)//2:])] # ...for each of these lists (the first half, the overall list, and the second half)
    # The (x:=len) is an assignment expression from Python 3.8.
    # It assigns the len function to the variable x but also returns len.
    # Therefore, x can be used as len to save a byte (yes, just one byte)

মিডিয়াকে গণনা করে এমন একটি ফাংশন ব্যবহার করা ভাল; সেই জমাটি আর পাইথন (3?) দ্বারা নয়, তবে "পাইথন + স্ট্যাটিস্টিক্স প্যাকেজ" বা অনুরূপ।
জিউসেপে

1

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

≔⊖LθηIE⟦⁰⊘÷η²⊘η⁻η⊘÷η²η⟧⊘⁺§θ⌊ι§θ⌈ι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ইনপুটটি আরোহী বা অবতরণ ক্রমে রয়েছে কিনা তার উপর নির্ভর করে আরোহী বা অবতরণ ক্রমের আউটপুট। ব্যাখ্যা:

≔⊖Lθη

শেষ উপাদানটির সূচক পান।

IE

নিম্নলিখিত অ্যারের উপাদানগুলির উপরে মানচিত্র করুন এবং পৃথক লাইনে অন্তর্ভুক্ত মুদ্রণের জন্য ফলাফলটিকে স্ট্রিংয়ে ফেলে দিন।

⟦⁰⊘÷η²⊘η⁻η⊘÷η²η⟧

চতুর্ভুজ উপাদানগুলির অবস্থান গণনা করুন, যেখানে একটি অতিরিক্ত 0.5নির্দেশ করে যে মান দুটি সংলগ্ন উপাদানের গড়।

⊘⁺§θ⌊ι§θ⌈ι

অবস্থানের মেঝে এবং সিলিংয়ের মানগুলির গড় গ্রহণ করে প্রতিটি অবস্থানের চৌম্বক গণনা করুন।


1

রুবি ২.7-প্রিভিউ 1 , 59 বাইট

সরাসরি ripoff বন্দর xnor এর পাইথন উত্তর

->a{[1,n=a.size,~n-n,~n,-3].map{(a[~-@1/4]+a[-~@1/4])/2.0}}

এটি অনলাইন চেষ্টা করুন! (এক বাইট আর Tio যেহেতু রুবি 2.5 ব্যবহার করছে ও নেই সংখ্যাযুক্ত ব্লক পরামিতি যেমন @1)।


1

সি (জিসিসি) , 123 121 119 বাইট

-2 সিলিংক্যাট ধন্যবাদ।

আরোহী ক্রমের অনুসারে বাছাই করা একটি তালিকা ধরে নেয়।

আউটপুটগুলি ক্রমে: মিনিট, কিউ 1, কিউ 2, কিউ 3, সর্বাধিক।

#define M(K,x)(K[~-x/2]+K[x/2])/2.,
f(L,n,m)int*L;{m=n-n/2;printf("%d %f %f %f %d",*L,M(L,m)M(L,n)M((L+n/2),m)L[n-1]);}

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


1

05 এ বি 1 ই , 18 বাইট

2F2äнIR})€ÅmIWsà‚«

আউটপুট-অর্ডার হয়: [Q1, Q3, Q2, min, max]

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন । (আমি {পরীক্ষার স্যুটটির জন্য বাছাই করেছি , সুতরাং পরীক্ষার কেসগুলি ক্রমে যাচাই করা সহজ [min, Q1, Q2, Q3, max])

ব্যাখ্যা:

2F                 # Loop 2 times:
  2ä               #  Split the list at the top of the stack into two halves
                   #  (which is the (implicit) input-list in the first iteration)
    н              #  Only leave the first halve
     IR            #  Push the input in reverse
       })          # After the loop: wrap all three lists into a list
                  # For each of the lists:
          Åm       #  Get the middle/median depending on the parity of the size of the list
            I      # Then push the input-list again
             W     # Get the minimum (without popping)
              s    # Swap to get the input-list again
               à   # Get the maximum (by popping the list)
                  # Pair the min-max together to a pair
                 « # And merge both lists together
                   # (after which the result is output implicitly)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.