মারিও কার্ট স্কোরিং ডাব্লু / টাইস


16

আমি এই সাইটের জন্য যে অন্য চ্যালেঞ্জ করছি তা নিয়ে কাজ করার সময় আমি এই সমস্যায় পড়েছিলাম। সেই চ্যালেঞ্জটিতে আমি " মারিও কার্ট 8 স্কোরিং " ব্যবহার করি । পঞ্চম খেলোয়াড়ের কে পঞ্চম স্থানের পয়েন্টের পরিমাণটি এই 1 সূচকযুক্ত অ্যারে দ্বারা প্রতিনিধিত্ব করে: [15,12,10,9,8,7,6,5,4,3,2,1]। সুতরাং প্রথম স্থান পায় 15 পয়েন্ট, 2 য় স্থান 12 পয়েন্ট, ইত্যাদি পায়।

এটির মতো পয়েন্টগুলি নির্ধারণ করা যথেষ্ট সহজ, তবে কৌশলটি অংশটি কীভাবে আমি সম্পর্কগুলি পরিচালনা করি তা নিয়ে আসে। আমি যা করি তা প্রতিটি বেঁধে দেওয়া খেলোয়াড়কে প্রতিটি বেঁধে দেওয়া জায়গার জন্য দেওয়া পয়েন্টগুলির গড় দেওয়া। উদাহরণস্বরূপ, যদি শুধুমাত্র 1 ম এবং 2 য় টাই হয় তবে উভয় খেলোয়াড়ই (15 + 12) / 2 = 13.5 পয়েন্ট পান। (দ্রষ্টব্য: আপনাকে নিকটতম অভ্যন্তরীণ রাউন্ডে যাওয়ার অনুমতি দেওয়া হয়েছে, সুতরাং 13 বা 14 উভয়ই গ্রহণযোগ্য)) তারপর তৃতীয় - দ্বাদশ স্থানে তাদের অবস্থানের জন্য স্বাভাবিক পরিমাণের পয়েন্ট পান।

চ্যালেঞ্জ

ক্রমহীনভাবে বাছাই করা 12 অ-নেতিবাচক পূর্ণসংখ্যার স্কোর দেওয়া, প্রতিটি খেলোয়াড় পয়েন্টের সংখ্যা আউটপুট দেয়। আপনি পয়েন্ট তালিকাকে [15,12,10,9, ...] ইনপুট হিসাবে নিতে পারেন। মনে রাখবেন যে প্রতিটি প্লেয়ার পয়েন্টের সংখ্যা স্কোরগুলির প্রকৃত মানগুলির উপর নির্ভর করে না, তবে তারা অন্যান্য স্কোরের সাথে কীভাবে তুলনা করে।

পরীক্ষার কেস

  • [21,21,15,14,12,9,6,5,4,3,2,1] => [ 14,14 , 10,9,8,7,6,5,4,3,2, 1]
  • [20,15,15,15,10,9,8,7,6,5,4,3] => [15, 10,10,10 , 8,7,6,5,4,3,2, 1]
    • ব্যাখ্যা: (12 + 10 + 9) / 3 = 10.3333
  • [1,1,1,1,1,1,1,1,1,1,1,1] => [ 7,7,7,7,7,7,7,7,7,7,7, 7 ]
    • ব্যাখ্যা: (15 + 12 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1) / 12 = 6.8333
  • [20,20,20,20,10,10,10,9,8,7,6,5] => [ 12,12,12,12 , 7,7,7 , 5,4,3,2, 1]
    • ব্যাখ্যা: (15 + 12 + 10 + 9) / 4 = 11.5, (8 + 7 + 6) / 3 = 7
  • [100,99,98,95,95,99,93,93,92,91,91] => [15,12,10, 8,8,8 , 6, 5,5 , 3, 2, 2 ]
    • ব্যাখ্যা: (9 + 8 + 7) / 3 = 8, (5 + 4) / 2 = 4.5, (2 + 1) / 2 = 1.5

সম্পর্কিত: "স্কিপস" সহ স্কোরগুলির একটি তালিকা রেঙ্ক করুন

উত্তর:


5

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

সিনট্যাক্স সংবাহন ইনপুট লাগে (p)(s), যেখানে পি পয়েন্ট তালিকা এবং এতে গুলি স্কোর তালিকা রয়েছে।

p=>s=>s.map(v=>s.reduce((t,x,i)=>x-v?t:t+p[n++,i],n=0)/n)

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


5

আর , 3 বাইট

স্পষ্টতই আর এর একটি অন্তর্নির্মিত রয়েছে। ইনপুট হিসাবে pঅলঙ্করণ এবং কোরগুলির একটি তালিকা নেয় s

ave

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

উদাহরণ:

p=c(15,12,10,9,8,7,6,5,4,3,2,1)

> ave(p,c(20,15,15,15,10,9,8,7,6,5,4,3))
 [1] 15.00000 10.33333 10.33333 10.33333  8.00000  7.00000  6.00000  5.00000  4.00000  3.00000  2.00000  1.00000
> ave(p,c(1,1,1,1,1,1,1,1,1,1,1,1))
 [1] 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333 6.833333

কাজের সঠিক সরঞ্জাম!
জোকোভেল

5
এটি 3 বাইট (জাস্ট ave) হওয়া উচিত অন্যথায় এটি কেবল একটি স্নিপেট (যা অনুমোদিত নয়)। ভাগ্যক্রমে, এটি আপনার 5 বাইট সাশ্রয় করে।
কেয়ার্ড কইনিরিংহিংহ

@ কেয়ারড ধন্যবাদ, আপনি একেবারে ঠিক বলেছেন।
বিএলটি


4

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

@ জোকাভেলকে ধন্যবাদ জানায় 2 বাইট !

7#uti2XQw)

ইনপুটগুলি ;পূর্ণসংখ্যার স্কোরগুলির একটি কলাম ভেক্টর ( বিভাজক হিসাবে) এবং পয়েন্টগুলির সাথে একটি কলাম ভেক্টর। আউটপুটে ফলাফলগুলি নিউলাইনগুলি দ্বারা পৃথক করে।

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

ব্যাখ্যা

       % Implicitly take first input. 
       % STACK: [21;21;15;14;12;9;6;5;4;3;2;1]
7#u    % Unique consecutive integer labels
       % STACK: [1;1;2;3;4;5;6;7;8;9;10;11]
t      % Duplicate
       % STACK: [1;1;2;3;4;5;6;7;8;9;10;11], [1;1;2;3;4;5;6;7;8;9;10;11]
i      % Take second input
       % STACK: [1;1;2;3;4;5;6;7;8;9;10;11], [1;1;2;3;4;5;6;7;8;9;10;11], [15;12;10;9;8;7;6;5;4;3;2;1]
2XQ    % Average second argument as grouped by the first
       % STACK: [1;1;2;3;4;5;6;7;8;9;10;11], [13.5;10;9;8;7;6;5;4;3;2;1]
w      % Swap
       % STACK: [[13.5;10;9;8;7;6;5;4;3;2;1], [1;1;2;3;4;5;6;7;8;9;10;11]
)      % Reference indexing
       % STACK: [13.5;10;9;8;7;6;5;4;3;2;1]
       % Implicitly display

সমাধানের সমাধান! আমি মনে করি আপনি নিকটতম ইনটকে বৃত্তাকার না করে কিছু বাইট সংরক্ষণ করতে পারেন (এটি প্রয়োজন হয় না)।
জিওকাভেল

@ জোকাভেল ওহ, আপনি ঠিক বলেছেন! গোল করার প্রয়োজন হিসাবে আমি চ্যালেঞ্জটি ভুলভাবে লিখছি। ধন্যবাদ!
লুইস মেন্ডো


2

সি # (.নেট কোর) , 154 বাইট

x=>s=>{for(int i=0;i<12;){int b=0,j=i,a=0,c=0;for(;j<12&&x[i]==x[j];j++,b++){a+=s[j];}a=(int)Math.Round(a/(b+.0));for(;c<b;c++){x[i+c]=a;}i+=b;}return x;}

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

সি # (.নেট কোর) + লিনক, 170 + 23 বাইট ব্যবহার করে

x=>s=>x.GroupBy(z=>z).Select(y=>Enumerable.Repeat(Math.Round(s.Skip(Array.IndexOf(x,y.Key)).Take(y.Count()).Average()),y.Count())).Aggregate((a,b)=>a.Concat(b)).ToArray()

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


2

জে, 15 বাইট

[:;<@(##+/%#)/.

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

স্কোরের তালিকাটি ( 1 2 ... 12 15) ডান হাতের যুক্তি হিসাবে এবং বাম-হাত আর্গুমেন্ট হিসাবে স্কোর করতে মানগুলি নিয়ে যায়। যদি এটি কোনও যৌক্তিক ইনপুট না হয় তবে এটির জন্য 1 বাইট যুক্ত করুন~ ইনপুটগুলি যে ক্রমে নেওয়া হচ্ছে তা উল্টাতে প্যাসিভের ।

গল্ফের জন্য কয়েকটি জিনিস থাকতে পারে, যার মধ্যে রয়েছে

  • আমার বক্সিংয়ের ব্যবহার
  • শেষে ক্যাপ

ব্যাখ্যা

আমি এটিকে কয়েকটি ফাংশনে ভাগ করব।

avg_and_dupe =. # # +/ % #
score        =. [: ; <@avg_and_dupe/.
  • avg_and_dupe তালিকার গড় লাগে এবং তালিকার দৈর্ঘ্যের তুলনায় বহুবার নকল করে ates
  • score স্কোরগুলির একটি তালিকা (ডান যুক্তি) প্রদত্ত একটি ইনপুট (বাম আর্গুমেন্ট) স্কোর করে।

avg_and_dupe

# # +/ % #
#           Length
  #         Copy as many times as the left argument
    +/ % #  Average
    +/       Sum
       %     Divided by
         #   Length

এটি এত সুন্দরভাবে কাজ করে কারণ এটি দুটি কাঁটাচামচ হিসাবে বিবেচিত হয় । যদি আপনি এখনও আপনার মাথা আঁচড়ান (আমি জানি আমি প্রথমে ছিলাম), জিজ্ঞাসা করুন এবং এটি কেন এটি কাজ করে কেন তার জন্য আরও গভীরতর ব্যাখ্যা সরবরাহ করতে পারি।

স্কোর

[: ; <@avg_and_dupe/.
                   /.  Key: using the values given, partition the scores
     <@avg_and_dupe     For each partition:
       avg_and_dupe      Average and duplicate
     <                   Then box
   ;                   Raze the boxes into a single list

যদি এটি এখনও বিভ্রান্তিকর হয় /.তবে আমি -key এর জন্য একটি ব্যাখ্যাও যুক্ত করতে পারি তবে আমি মনে করি উইকি পৃষ্ঠাটি এটি বেশ ভালভাবে ব্যাখ্যা করেছে।


নোট করুন যে ওপি যোগ করেছে You can also take the points list [15,12,10,9,...] as input.যদি এটি আপনাকে কোনও বাইট সংরক্ষণ করে
স্টিফেন


2

জেলি , 11 বাইট

ṁ⁴Œg¤Æmṁ$€F

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

-3 বাইট নতুন জেলি বৈশিষ্ট্যগুলি লক্ষ্য করার জন্য ফায়ার ফ্লেমকে ধন্যবাদ: ডি


হ্যাঁ, সম্পর্কিত চ্যালেঞ্জের সমাধানগুলি কতটা সংক্ষিপ্ত রয়েছে তা খুব সম্ভবত দেখার পক্ষে long
জোকোভেল

@ জোকাভেল বিরক্তিকর বিষয়টি হল যে তালিকাটি তৈরি করার কোডটি সেই জে দ্রবণের চেয়ে দীর্ঘতর; _;
হাইপারনিউট্রিনো

আমি রাখতে ভুলে গেছি যে আপনি পয়েন্ট তালিকাটি ইনপুট হিসাবেও নিতে পারেন। আমি যোগ করতে যাচ্ছি।
জোকোভেল

11 বাইট। পরিবর্তে নতুন গাণিতিক গড় মোনাড S÷Lএবং পরিবর্তে ছাঁচ ব্যবহার করে xLযা $দুটি পরিবর্তে মঞ্জুরি দেয় µ
ফায়ার ফ্লেম 241




1

প্রোটন , 62 বাইট

(s,p)=>[sum(p[s.index(i)to][to s.count(i)])/s.count(i)for i:s]

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

প্রোটন , 63 বাইট

(s,p)=>map(i=>sum(p[s.index(i)to][to s.count(i)])/s.count(i),s)

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


Next আমি ঠিক পরের বার প্রোটন দিয়ে শুরু করব।
সম্পূর্ণরূপে

1

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

∊{(⊂≢⍴+/÷≢)⍵}⌸

বাম আর্গুমেন্ট হিসাবে স্কোরের তালিকা এবং ডান আর্গুমেন্ট হিসাবে পয়েন্ট তালিকাকে গ্রহণ করে। এটি মোড়ানো জন্য 2 বাইট যোগ করুন() ফাংশন না হিসাবে সরাসরি বলা হয় এবং ।

{...}⌸ বাম আর্গুমেন্টে কী দ্বারা ডান যুক্তিটিকে গ্রুপ করুন এবং প্রতিটি গ্রুপে (কী অপারেটর) ব্রেসগুলিতে ফাংশন প্রয়োগ করুন।

⊂≢⍴+/÷≢ এটি একটি কাঁটাচামচ যেখানে:

+/÷≢ গোষ্ঠীর জন্য গড় পয়েন্ট (সমষ্টি তাল দ্বারা বিভক্ত)

≢⍴ ট্যালি পুনরায় আকার দিন (গ্রুপে আইটেমের সংখ্যার সাথে গড় মেলে গড়ের প্রতিলিপি করুন)

ফলাফলটি বাক্স করে (এটি মূল অপারেটরের প্রয়োগের ফলাফলের মিশ্রণকে প্রতিহত করতে)

কী অপারেটর (যা ভেক্টরের নেস্টেড ভেক্টর) এর ফলাফলটিকে সরল তালিকাতে তালিকাভুক্ত করে এবং সমতল করে।

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


1

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

f::[Int]->[Int]
f=concat.g(15:12:[10,9..1])[]
g[q]t _=[q:t]
g(q:r)t(x:z)|x>head z=(replicate(l(q:t))(sum(q:t)`div`l(q:t))):g r[]z|1<2=g 
r(q:t)z
l=length

এটি আমদানি করতে ব্যথা groupByএবং onতাই আমাকে নিজেরাই করতে হয়েছিল।

গড় ফাংশন শীঘ্রই সংক্ষিপ্ত করা হবে।

স্বাক্ষর প্রয়োজন বোধহয় সংকলক পতাকা সহ এড়ানো যেতে পারে।

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