আমার তালিকার গড় তুলনা করুন


18

একটি তালিকার গড় প্রাপ্তি (উদাঃ [2,6,7])

  • তালিকার দৈর্ঘ্য পান: [2,6,7] -> 3
  • তালিকায় সংখ্যার যোগফল: 2 + 6 + 7 = 15
  • তাদের গণনা দ্বারা সমষ্টি ভাগ: 15 / 3 = 5

আপনি দুটি তালিকার গড় তুলনা করা উচিত নয় ইতিবাচক পূর্ণসংখ্যার এন এবং এম একটি মান ফিরে যদি, এন একটি উচ্চ গড় আছে, অন্য মান যদি এম একটি উচ্চ গড় আছে, এবং টাই ক্ষেত্রে অন্য একটি।


আই / ও বিধি

সমস্ত স্ট্যান্ডার্ড ইনপুট এবং আউটপুট পদ্ধতি অনুমোদিত।

ইনপুট

আপনি দুটি পৃথক তালিকা, নেস্টেড তালিকা বা এই কাজের জন্য উপযুক্ত বলে মনে করেন এমন অন্য কোনও জিনিস হিসাবে ইনপুট নিতে পারেন। বিন্যাস নির্দিষ্ট করুন।

আউটপুট

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


চশমা

  • তালিকাগুলির অগত্যা সমান দৈর্ঘ্য হবে না।

  • আপনি গ্যারান্টিযুক্ত যে তালিকাগুলি খালি নয়।


পরীক্ষার মামলা

আমি মান বেছে নেওয়া হয়েছে N wins, M winsএবং Tie, যা প্রায় কাছাকাছি স্বত: সিদ্ধ হয়।

এন, এম -> আউটপুট (গড়)

[]], []] -> এন জিতেছে (এন আছে 7, এম আছে 6)
[4,5], [4,4] -> এন জিতেছে (এন এর 4.5 আছে, এম আছে 4)
[2,3,4], [4,5,6] -> এম জিতেছে (এন এর আছে 3, এম আছে 5)
[4,1,3], [7,3,2,1,1,2] -> টাই (উভয়েরই কাছে 2.666 রয়েছে ...)
[100,390,1], [89,82,89] -> এন জিতেছে (এন আছে 163.666 ..., এম এর 86,666 ...)
[92,892], [892,92] -> টাই (তালিকাগুলি মূলত অভিন্ন) 
[10,182], [12,78,203,91] -> টাই (উভয়েরই 96 আছে)

ডিফল্ট লুফোলস প্রয়োগ হয়। ব্যাখ্যা উত্সাহিত হয়! এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী!



যদি আমার পছন্দের ভাষাটি কেবল পূর্ণসংখ্যাকে সমর্থন করে, তবে আমি কি 1000 দ্বারা গুণিত ইনপুট নিতে পারি? এইভাবে গণনা করা গড়গুলি এখনও 3 দশমিক স্থানে সঠিক হবে
স্কিডেদেব

@ মায়ুব হ্যাঁ, এটি অনুমোদিত
মিঃ এক্সকোডার

আমাদের কমপক্ষে 1 টি অক্ষরের আউটপুট ফিরিয়ে দিতে হবে। এর অর্থ কি আমাদের কোনও চরিত্র বা স্ট্রিং ফেরত দেওয়া দরকার? বা আপনি কি এমন আউটপুট বোঝাচ্ছেন যার স্ট্রিংয়ের মান কমপক্ষে 1 টি অক্ষরের?
অলিভিয়ার গ্রাগোয়ার

@ অলিভিগ্রগ্রোয়েয়ার প্রদত্ত আউটপুট অবশ্যই কমপক্ষে 1 টি অক্ষর দীর্ঘ হতে হবে (আপনি খালি স্ট্রিংটি ফিরিয়ে দিতে পারবেন না, তবে কমপক্ষে 1 টি অক্ষরের কোনও স্ট্রিং এবং কোনও সাদা-স্থান অক্ষরও ফিরিয়ে দিতে পারবেন)। এটা আপনার উপর নির্ভর করছে.
মিঃ এক্সকোডার

উত্তর:



15

গণিত, 15 বাইট

Order@@Mean/@#&

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

Functionযা দুটি তালিকার একটি তালিকা প্রত্যাশা করে। Mean/@#ইনপুটটিতে প্রতিটি তালিকার গাণিতিক গড় গ্রহণ করে, তারপরে সেই মাধ্যমগুলি প্রবেশ করানো হয় Order, -1যদি প্রথম তালিকার জয় হয় 0যদি টাই হয়, এবং 1যদি দ্বিতীয় তালিকার জয় হয় তবে তা ফিরে আসে।


7

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

(@ শেগগিকে ধন্যবাদ 2 বাইট সংরক্ষিত।)

এখানে দুটি 50 বাইট সমাধান রয়েছে:

f=(N,M,a=eval(N.join`+`)/N.length)=>M?(a-f(M))/0:a

(N,M,A=a=>eval(a.join`+`)/a.length)=>(A(N)-A(M))/0

রিটার্নস অসীম এন, জন্য -Infinity এম জন্য, এবং NaN টাই জন্য।

পুনরাবৃত্তির কারণে প্রথম সমাধানটির কিছুটা ব্যাখ্যা প্রয়োজন হতে পারে:

ফাংশনে প্রথম কলটিতে অ্যারের aগড় হিসাবে শুরু হয় N:

a=eval(N.join`+`)/N.length

M এই মুহুর্তে একটি মান রয়েছে, তাই শর্তাধীন অভিব্যক্তির প্রথম অংশটিকে বলা হয়:

M ? (a-f(M))/0 : a  ----------    

ফাংশনটি এই এক্সপ্রেশনটির মধ্যে ডাকা হয়, এবার বিকল্প Mহিসাবে N

এই দ্বিতীয় কলটিতে ফাংশনটি aগড় হিসাবে শুরু হয় N–– যা Mআগের কলটিতে ছিল।

যেহেতু ফাংশনে এই কল করার সময় কোনও দ্বিতীয় প্যারামিটার নেই, শর্তসাপেক্ষ প্রকাশের দ্বিতীয় অংশটি ট্রিগার করা হয়, যা গড় ফেরত দেয়:

M ? (a-f(M))/0 : a  --

আমরা এখন এক্সপ্রেশনটি আরও ভালভাবে বুঝতে পারি:

(a - f(M)) / 0

এটা:

(the average of N  minus  the average of M) divided by 0

গড়ের মধ্যে পার্থক্যটি একটি ধনাত্মক সংখ্যা, aণাত্মক সংখ্যা বা 0 হবে।

পার্থক্যকে 0 ফলাফল দ্বারা বিভাজন করে অনন্ত , -ইনফিনিটি , বা NAN - তিনটি পৃথক মান প্রয়োজনীয় হিসাবে সরবরাহ করে।

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


আপনি Aফাংশন পরামিতিগুলিতে গিয়ে কয়েকটা বাইট সংরক্ষণ করতে পারেন ?
শেগি


5

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

অনেকগুলি সংশোধক ( Yএবং Z)। এটি খাটো করার কোনও উপায় আমি খুঁজে পাচ্ছি না। sum / number_of_elementsতিন বাইট হয়। এটি করার আরও ভাল উপায় হতে পারে -ZSতবে আমি এটি খুঁজে পাচ্ছি না।

YmiYm-ZS

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

           % Take first input implicitly
Ym         % Mean of that input
  i        % Grab second input
   Ym      % Mean of that input
     -     % Subtract
      ZS   % Sign

রিটার্নস 1যদি প্রথম ইনপুট বড়, 0তারা গিঁট, এবং যদি -1দ্বিতীয় ইনপুট বড় পারেন।





3

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

@(x,y)sign(mean(x)-mean(y))

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

দুটি ভেক্টরকে x.yইনপুট হিসাবে নেয় mean, উভয় ভেক্টরের গ্রহণ করে এবং একটির অপর থেকে বিয়োগ করে। এই চিহ্ন পান, পেতে 1, 0এবং -1তিনটি ভিন্ন বিকল্প জন্য।



3

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

দুটি তালিকার তালিকার জন্য প্রম্পট দেয়। বামগুলি 1যদি উচ্চতর হয় তবে প্রিন্টগুলি যদি একই গড় হয় ¯1তবে 0 এবং ডানদিকে উচ্চতর থাকে।

×-/(+/÷≢)¨⎕

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

 শীঘ্র

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

+/ যোগফল

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

 ট্যালি

-/ তাদের মধ্যে একটি বিয়োগ প্রবেশ করান (এবং মূল্যায়ন করুন)

× সংকেত


3

জাভাস্ক্রিপ্ট, 81 66 58 56 বাইট

লুকের জন্য 15 বাইট ধন্যবাদ সংরক্ষণ করা

জাস্টিন মেরিনার ধন্যবাদ 2 বাইট সংরক্ষণ

n=>m=>Math.sign((a=b=>eval(b.join`+`)/b.length)(m)-a(n))

টাইটি 0, এম 1 এবং এন -1 হয়। কারিটিং সিনট্যাক্স ব্যবহার করে বলা হয়, যেমন।f([7])([6])


1
আপনি এটি বেশ কয়েকটি বাইট দ্বারা উন্নত করতে পারেন: আপনি ভেরিয়েবল অ্যাসাইনমেন্টটি সরিয়ে ফেলতে পারেন, আপনি কারি সিনট্যাক্স ব্যবহার করতে পারেন, সতর্কতাটি সরাতে পারেন এবং ব্যবহার করে আপনি সহজে অ্যারে যোগ করতে পারেন eval(a.join`+`)a=>(b=a.map(c=>eval(c.join`+`)/c.length))[0]-b[1]?b[0]>b[1]:061 বাইট জন্য। এটি অ্যারের অ্যারে হিসাবে ইনপুট নেয় এবং 0টাই trueএবং এম এবং falseএন এর জন্য আউটপুট দেয়
লূক

আপনি কেন এটি নিজের উত্তর হিসাবে পোস্ট করেন না?
সুপারস্টারমার

1
আপনি ফাংশন (ইনলাইনিং দ্বারা আরো দুটি বাইট বাঁচাতে পারে a) প্রথমবার এটি ব্যবহৃত হয়: n=>m=>Math.sign((a=b=>eval(b.join`+`)/b.length)(m)-a(n))
জাস্টিন মেরিনার

3

পিএইচপি , 68 বাইট

<?foreach($_GET as$v)$r[]=array_sum($v)/count($v);echo$r[0]<=>$r[1];

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

পিএইচপি , 69 বাইট

<?=($s=array_sum)($a=$_GET[0])/count($a)<=>$s($b=$_GET[1])/count($b);

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

স্পেসশিপ অপারেটর -1 এর পরে কম, 0 টাই, তারপরে 1 আরও বেশি


3

হাস্কেল, 65 43 বাইট

22 টি বাইট সংরক্ষণ করেছেন নিমিকে ধন্যবাদ!

a x=sum x/sum[1|_<-x] 
x#y=compare(a x)$a y

আরও অনেক ভাল উপায় থাকতে হবে ... তবে ধরণের রূপান্তরগুলি আমাকে খারাপ করে দিয়েছে।

ব্যবহার

(#) [7] [6]

রিটার্নস GTযদি প্রথম আর্গুমেন্ট জয়ী, LTযদি দ্বিতীয় যুক্তি ধিক্কার জানাই, এবং EQযদি তারা গিঁট।

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


1
ঢালাই করার কোন প্রয়োজন নেই sum$xসঙ্গে f.। এছাড়াও: length xসঙ্গে প্রতিস্থাপিত হতে পারে sum[1|_<-x], তাই আপনি বন্ধ পরিত্রাণ পেতে পারেন fসম্পূর্ণরূপে: a x=sum x/sum[1|_<-x]
নিমি

আহ ভাল! এমনকি এটি করতে ভেবেও দেখেনি।
হেনরি

1
... ওহ এবং #: ...(a x)$a y
নিমি

1
... আরও ভাল: আপনার প্রধান ফাংশন সঙ্গে pointfree যান, তারপর আপনি যা করতে পারেন এমনকি এটি জন্য নাম সংরক্ষণ করুন: (.a).compare.a। ব্যবহার: ( (.a).compare.a ) [7] [6]
নিমি

2
আরও একটি: [1|_<-x]হিসাবে একই (1<$x)
নিমি

3

জে, 10 বাইট

*@-&(+/%#)

বামদিকে একটি তালিকা দেওয়া হয়েছে, একটি ডানদিকে। বাম গড় ছোট হলে 1 টি, এটি বড় হলে 1 এবং তারা সমান হলে 0 আসবে

  • (+/%#) একটি তালিকার গড় গণনা করার জন্য একটি স্ট্যান্ডার্ড জে কাঁটাচামচ
  • &ডায়ডিক কাঁটাচামচ একটি বৈচিত্র প্রদান করে। এটি উভয় আর্গুমেন্টের জন্য ডান দিকটি (গড় ক্রিয়া, এই ক্ষেত্রে) প্রয়োগ করে এবং তারপরে এগুলি বাম পাশের ক্রিয়া সহ প্রেরণ করে, যা এই ক্ষেত্রে ...
  • *@- "চিহ্ন" এর পরে বিয়োগ: সুতরাং ডান গড় বাম থেকে বিয়োগ করা হয়, এবং আমাদের ফলাফলের সাইন দেওয়া হয় -, 1, বা 0

3

পাইথ, 10 8 7 6 বাইট

বাইট বাঁচানোর জন্য @ আইস্যাকগকে ধন্যবাদ

._-F.O

ইনপুট একটি নেস্টেড তালিকা হিসাবে নেওয়া হয় [N, M],। আউটপুট -1যদি N < M, 1যদি N > Mএবং 0যদি তারা সমান।

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


আপনি প্রতিস্থাপন দ্বারা একটি বাইট সংরক্ষণ করতে পারবেন h.+সঙ্গে-F
isaacg

3

টিআই-বেসিক, 25 21 13 12 10 বাইট

লিটারোসিস্টকে ধন্যবাদ -2 বাইটস

:tanh(ᴇ9mean(L₁-mean(L₂

2
এই ব্যবহার করে golfed যাবে Ansপরিবর্তে C: mean(L₁)>mean(L₂:Ans+3(mean(L₁)=mean(L₂21 বাইট।
স্কট মিলনার

আপনি (এবং মুছে ফেলতে পারেন )
0-0 এ lirtosiast

2

জেলি , 7 বাইট

S÷Lµ€IṠ

দুটি তালিকার একটি তালিকা গ্রহণ করে একটি মোনাডিক লিঙ্ক, N,Mযা প্রত্যাবর্তন করে:
[-1]জন্য N;
[1]জন্য M; এবং
[0]একটি টাই জন্য।
একটি পূর্ণ প্রোগ্রামটি ফলাফলের ছাপে হিসাবে (একক আইটেম তালিকা শুধুমাত্র, তাই তাদের বিষয়বস্তু প্রিন্ট -1, 1অথবা 0)।

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

কিভাবে?

S÷Lµ€IṠ - Link: list of lists, [N,M]
   µ€   - perform the chain to the left for €ach (of N, M)
S       -   sum
  L     -   length
 ÷      -   divide (yields the average)
     I  - incremental differences (yields [avg(M) - avg(N)])
      Ṡ - sign (yields: [1] if avg(M)>avg(N); [-1] if avg(N)>avg(M); or [0] if equal)

আমি জানতাম জেলি এই চ্যালেঞ্জে বেশ ভাল হবে, আমি কেবল ভাষা খুব ভাল জানি না। আমাকে মারধর করার ক্ষেত্রে ভাল করেছেন: পি
ওকক্স

আমি 100% নিশ্চিত নই যে এটি সম্ভব নয়, বলুন, 5 ...!
জোনাথন অ্যালান

@ জোনাথন অ্যালান আমি? মূলত গড় গড় ফাংশনটি মানচিত্রের জন্য, যা এখনও অন্তর্নির্মিত নয়, তাই আপনি সংক্ষিপ্ততম (আমার ধারণা) অংশটি ব্যবহার করেন S÷L, এবং তারপরে আপনি এটিকে একক-লিঙ্কে রূপান্তর করেন S÷¥L$যা S÷Lµএটির সাথে সংক্ষিপ্ত করা যেতে পারে প্রোগ্রামটির খুব শুরু এবং তারপরে আপনি মানচিত্রের জন্য একটি ডানদিক রেখেছিলেন এবং তারপরে আপনি যে তুলনামূলকভাবে ব্যবহার করবেন তার তুলনায় কোনও বিল্টিন নেই _/Ṡতবে আপনি IṠএখনও ছোট করতে পারবেন যেহেতু এটি এখনও 3 স্বতন্ত্র সিএমপি আউটপুট ... হ্যাঁ, বেশ নিশ্চিত যে এটি হতে পারে না 5 এ সম্পন্ন হয়েছে 5 এছাড়াও আমি FGITW'd যেহেতু সাহায্য করবে না। :)
এরিক আউটগল্ফার

2

পার্ল 6 , 25 বাইট

{sign [-] .map:{.sum/$_}}

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

একটি একক যুক্তি, সংখ্যার তালিকার একটি দুটি-উপাদান তালিকা নেয়। রিটার্নস 1যদি প্রথম তালিকা, অধিক গড় হয়েছে -1যদি দ্বিতীয় তালিকা আছে, এবং 0যদি গড় সমান।


2

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

a=>(b=(c=a.map(d=>eval(d.join`+`)/d.length))[0])-c[1])?b>0:0

আউটপুট 0জন্য Tie, trueজন্য Nএবং falseজন্য M


2

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

-লাইট এবং @ নীলকে -6 বাইট ধন্যবাদ thanks

(i,[x,y]=i.map(v=>eval(v.join`+`)/v.length))=>y-x&&x>y

একটি 2-উপাদান অ্যারের হিসাবে ইনপুট নেয় [N, M]। আউটপুট true, 0বা falseজন্য N, Tieঅথবা Mযথাক্রমে।

ব্যাখ্যা

(i,                 // input array: [N, M]
    [x,y] =         // destructure assignment: set x and y to...
    i.map(v=>       // the input values mapped as...
        eval(v.join`+`) // the sum, by joining the array with +
        / v.length      // divided by the length
    )
) => y-x && x>y     // return 0 for tie, or the result of avg(N) > avg(M)

পরীক্ষার স্নিপেট

স্পেস / কমা দ্বারা পৃথক করা ইনপুট নম্বর।


1
আপনি সম্ভবত প্রতিস্থাপন Math.sign(y-x)দ্বারা কিছু বাইট সংরক্ষণ করতে পারেন y-x?x>y:0। আউটপুট 0জন্য Tie, trueজন্য Nএবং falseজন্য M
লুক

1
x-y&&x>yসম্ভবত?
নীল

@ নীল নিস, আরও ভালো
জাস্টিন মেরিনার

2

পিপ , 13 বাইট

{$CM$+*a/#*a}

এটি তালিকার একটি তালিকা গ্রহণ করে এমন একটি ফাংশন। রিটার্নস 1যদি প্রথম গড় বড়, -1যদি দ্বিতীয় বড়, 0বাঁধা পারেন। সমস্ত পরীক্ষার মামলা এখানে চালান।

পটভূমি

এই দ্রবণটি পিপের দুটি মেটাওপ্রেটারকে ভারী ব্যবহার করে:

  • $, ভাঁজ. বাইনারি অপারেটর নিন এবং এটি তালিকার উপাদানগুলির মধ্যে প্রয়োগ করুন। উদাহরণস্বরূপ, যোগ +হয়, কিন্তু $+একটি তালিকা যোগফল । নোট করে যে $বাইনারি অপারেটরটিকে অ্যানারি অপারেটরে পরিণত করে।
  • *, মানচিত্র। একটি অ্যানারি অপারেটর নিন এবং এটি তালিকার প্রতিটি উপাদানগুলিতে প্রয়োগ করুন। উদাহরণস্বরূপ, #তালিকার দৈর্ঘ্য #*দেয় তবে তালিকার আইটেমগুলির দৈর্ঘ্য দেয় (একটি তালিকা)।
  • এই দুটি মেটাওপ্রেটারকে একত্রিত করা যেতে পারে: $+*একটি তালিকার উপরে মানচিত্রগুলি ভাঁজ / প্লাস, তালিকার প্রতিটি উপাদানকে সংযুক্ত করে।

পিপ সম্পর্কে অন্য জিনিসটি জানতে হবে যে প্রচুর অপারেটর ডিফল্টরূপে তালিকাগুলিতে আইটেম-ভিত্তিতে কাজ করে। উদাহরণস্বরূপ, [1 2 3] * 5দেয় [5 10 15]; [1 2 3] * [2 3 4]দেয় [2 6 12]; এবং [[1 2] [3 4]] * [5 6]দেয় [[5 10] [18 24]]

ব্যাখ্যা

আমরা এর উদাহরণ ইনপুট ব্যবহার করব [[2 3 4] [2 3 4 6]]:

  • {...}
    একটি ফাংশন সংজ্ঞা দেয়। (প্রথম) যুক্তিটি স্থানীয় ভেরিয়েবলের সাথে আবদ্ধ a
  • #*a
    #সাবলিস্টগুলির দৈর্ঘ্য পেয়ে ফাংশনের যুক্তির মানচিত্র । ফলাফল:[3 4]
  • a/#*a
    এর সাবলিস্টগুলি aতাদের নিজ নিজ দৈর্ঘ্যের দ্বারা ভাগ করুন । ফলাফল:[[0.667 1 1.333] [0.5 0.75 1 1.5]]
  • $+*a/#*a
    $+ফলাফলটিতে মানচিত্র (সংযোজন ভাঁজ), সাবলিস্টগুলি সংক্ষেপ করে। ফলাফল:[3 3.75]
  • $CM$+*a/#*a
    ভাঁজ CM, যা দেয় -1, 0বা 1এর দুটি অপারেন্ডের (পাইথনের মতো cmp) তুলনার উপর নির্ভর করে । ফলাফল: -1(কারণ এর 3চেয়ে ছোট 3.75)।

আপনি পিপে ফাংশনগুলি সংজ্ঞায়িত করতে পারেন পরিচয় ফাংশন ধারণকারী এক্সপ্রেশন লিখে _। উদাহরণস্বরূপ, _*_এমন একটি ফাংশন যা এর তর্ককে স্কোয়ার করে - সিনট্যাকটিক চিনির জন্য {a*a}এবং আরও কম বাইট। তবে দোভাষীর বর্তমান সংস্করণে একটি বাগ রয়েছে _যা *মেটাওপ্রেটারের সাথে কাজ করা থেকে বাধা দেয় । একবার যা ঠিক আছে, এই সমাধান হতে পারে 11 বাইট : $CM$+*_/#*_


2

সি (জিসিসি), 91 98 বাইট

u,v,j;f(x,y,a,b)int*a,*b;{for(u=v=0;x--;u+=a[x])for(j=0;j<y;)v+=b[j++];j=u*y-v;x=j>0?2:!j;}

সি এর জন্য ভুল জায়গা এবং সম্ভবত একমাত্র উত্তর যা বিভাগের প্রয়োজন নেই। কমপক্ষে কোনও স্লাইডার ছাড়াই কোড প্রদর্শিত হবে।

জন্য 0,1,2 ফিরুন M>N, M=N, M<Nযথাক্রমে। ইনপুট হিসেবে লাগে length of M, length of N, M, N


চশমা মধ্যে যুক্তি হিসাবে দৈর্ঘ্য গ্রহণ করা হয়? এগুলি থেকে যদি তা হয় তবে তা থেকে উল্লেখযোগ্য কোডটি কেটে দেয়।
হেনরি

আমি জানি না যে অ্যারের দৈর্ঘ্য পুনরুদ্ধার করার জন্য সি এর অন্য কোনও উপায় আছে কিনা। দৈর্ঘ্য নিজেই অ্যারের অভ্যন্তরীণ অংশের মতো।
কিউ গান

2

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

⟨+/l⟩ᵐ-ṡ

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

আউটপুটস 1যদি প্রথম তালিকার একটি বৃহত গড় থাকে, -1তবে দ্বিতীয় তালিকার একটি বড় গড় রয়েছে, এবং 0যদি তা বাঁধা থাকে।

ব্যাখ্যা

     ᵐ        Map:
⟨   ⟩           Fork:
 +                Sum…
  /               …divided by…
   l              …length
       -      Subtract
        ṡ     Sign

2

জাভা, 105 বাইট

s->s.stream().map(l->l.stream().reduce((i,j)->i+j).get()/l.size()).reduce((i,j)->Math.signum(i-j)).get();

ল্যাম্বডা যা অনুমোদিত নেপথ হিসাবে একটি নেস্টেড তালিকা নেয়।

তালিকার তালিকার স্ট্রিম দেয়, উভয়কে তাদের গড়তে রূপান্তরিত করে, তারপরে পার্থক্যের চিহ্নটি প্রদান করে। টাইয়ের জন্য যদি 1প্রথম তালিকাটি বড় হয়, -1দ্বিতীয় তালিকাটি বড় হয় 0


যেহেতু "যে কোনও কিছুই একটি ইনপুট হতে পারে", তাই আমিStream সরাসরি যেমন ঠিক ব্যবহার করি
অলিভিয়ার গ্রাগোয়ার

2

আর 38 34 বাইট

function(a,b)sign(mean(a)-mean(b))

ফাংশন যা ইনপুট হিসাবে দুটি সংখ্যক ভেক্টর হিসাবে নেয়। প্রথম তালিকার গড় উচ্চতর হলে 1 প্রদান করে, যদি একই হয় তবে 0 হয় এবং দ্বিতীয় তালিকার গড় উচ্চতর হলে -1 হয়।


1
এটি কি কোনও বেনামে ফাংশন যা অ্যাসাইনমেন্ট ছাড়াই বলা যেতে পারে? আমি আর জানি না তবে এটি যদি আপনার দরকার হয় না f=
গম উইজার্ড

@ উইট উইজার্ড আপনি সঠিক; অতিরিক্তভাবে আপনি {}ফাংশন বডি থেকে মুছে ফেলতে পারেন ।
জিউসেপে

ইনপুট জন্য ধন্যবাদ। কোডগল্ফে এটি আমার প্রথম প্রচেষ্টা।
জেলাইট

2

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

এতটা বুদ্ধিমান হয়ে উঠবেন না! *

!-ssZS

ইনপুট স্ট্যাক অর্ডার:

M
N

আউটপুট:

 1 = N wins  
-1 = M wins  
 0 = tie

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

!-ssZS
========
!           % transpose M
 -          % N - M^T using elementwise subtraction and implicit expansion
  s         % sum columns of the result
   s        % sum the resulting row vector
    ZS      % sign of the sum

* এই উত্তরটি কোনও দরিদ্র, প্রতিরক্ষামহীন সংখ্যার কাছে অর্থহীন হয়ে ওঠে।


2

জাভা (ওপেনজেডিকে 8) , 76 62 বাইট

a->b->Math.signum(a.average().orElse(0)-b.average().orElse(0))

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

যেহেতু ইনপুট যে কোনও কিছু হতে পারে, তাই আমি সিদ্ধান্ত নিয়েছি IntStreamইনপুট হিসাবে গ্রহণ করব । আপনি একটি প্রমিত এই ধরনের একটি ইনপুট পেতে পারেন int[]সঙ্গে Arrays.stream(array)

আউটপুটটি 1"এন উইনস", -1"এম উইনস" এবং 0টাইয়ের জন্য।

সংরক্ষণ

  • @ জিরকন এবং @ এক্সান্দারহল উভয়ের অন্তর্দৃষ্টি থেকে -১৪ বাইট!

আপনি যেভাবে ইনপুট নিতে বেছে নিয়েছেন তা সত্যিই চালাক!
ডেভিড কনরাড

1
@ ডেভিডকনরড আমার কাছে এই উত্তরটির দীর্ঘ সংস্করণটি গতকাল থেকেই ছিল (সবেমাত্র প্রিপেন্ড করা java.util.Arrays.stream(array).map(java.util.Arrays::stream))। আমি যখন আজ প্রশ্নটি পুনরায় পড়ি তখনই আমি ভেবেছিলাম যে এই ইনপুট ফর্ম্যাটটি যে কোনও হিসাবে বৈধ।
অলিভিয়ার গ্রাগোয়ার

1
চান .orElse(0)একটি টেকসই সংক্ষেপিত হতে .getAsDouble()?
জিরকন

1
আপনি যদি পরিবর্তে কেবল (a,b)->Math.signum(a.average().orElse(0)-b.average().orElse(0));
ইনপুটটির

এগুলি কেবল ভাল ধারণা, বন্ধুরা! চালিয়ে যান: পি
অলিভিয়ার গ্রাগোয়ার

1

ডায়ালগ এপিএল, 14 বাইট

×(-/(+/÷≢)¨∘⊢)

1বামটি যদি বৃহত্তর হয়, ¯1যদি ডান হয় এবং 0টাই হয়।

কিভাবে?

¨∘⊢ প্রতিটি তালিকার জন্য

+/÷≢গড় গণনা ( +/যোগফল ÷দ্বারা বিভাজন) দৈর্ঘ্য)

-/ গড় বিয়োগ

× ফলাফলের চিহ্ন


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