রক-পেপার-কাঁচি প্রতিযোগিতা সিমুলেটর


9

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

আপনি চ্যাম্পিয়নশিপ অনুকরণ করতে একটি প্রোগ্রাম (বা ফাংশন) লেখার সিদ্ধান্ত নিয়েছেন।

প্রতিযোগিতার বিবরণ

  • সেখানে কমপক্ষে ৪ জন প্রতিযোগী থাকবেন।
  • প্রত্যেক খেলোয়াড় অন্য সবার সাথে ঠিক এক ম্যাচ খেলে।
  • একটি ম্যাচ 7 রাউন্ড স্থায়ী হয়।
  • প্রতিটি রাউন্ডে বিজয়ী 2 পয়েন্ট পায় পরাজয়কারী কিছুই পায় না। টাই হলে উভয় খেলোয়াড় স্কোর 1 পয়েন্ট।
  • ম্যাচে খেলোয়াড়দের স্কোর হ'ল ম্যাচের পরিবর্তনের চেয়ে তার পয়েন্টের যোগফল।
  • চ্যাম্পিয়নশিপে কোনও খেলোয়াড়ের চূড়ান্ত স্কোর হ'ল সমস্ত ম্যাচগুলিতে তার পয়েন্টের যোগফল।

ইনপুট বিশদ:

  • আপনার প্রোগ্রাম বা ফাংশনটি N10 টি চরিত্রের দীর্ঘ স্ট্রিং গ্রহণ করে যার মধ্যে প্রতিটি খেলোয়াড়ের কৌশল অনুসারে। সমস্ত অক্ষর (ছোট হাতের অক্ষর) r pবা এর sঅর্থ যে প্রদত্ত পরিস্থিতিতে প্লেয়ারটি রক পেপার বা কাঁচি প্রদর্শন করবে।
  • প্রথম অক্ষরটি প্রথম টার্নকে কোড করে (সেই প্রতিযোগীর জন্য প্রতিটি ম্যাচে)। দ্বিতীয়টি দেখায় যে শেষ রাউন্ডটি যদি রক বনাম রক হয় তবে কী ঘটে। পরবর্তী অক্ষরগুলি হল আরভিপি, আরভিএস, পিভিআর, পিভিপি, পিভিএস, এসভিআর, এসভিপি এবং এসভিএস যেখানে প্রথম অক্ষরটি প্লেয়ারের চিহ্ন এবং দ্বিতীয়টি প্রতিপক্ষের। উদাহরণস্বরূপ rrpsrpsrps, খেলোয়াড় রক দিয়ে শুরু হয় এবং তারপরে প্রতিপক্ষের শেষ পদক্ষেপটি অনুলিপি করে।
  • আপনি আপনার ভাষার স্ট্রিংয়ের তালিকাটি / অ্যারে বা অনুরূপ ডেটা বা একটি স্ট্রিং হিসাবে ইনপুট করতে পারেন। পরবর্তী ক্ষেত্রে কিছু ধরণের বিভাজক চরিত্র অবশ্যই আবশ্যক।

আউটপুট বিশদ:

  • আপনার প্রোগ্রাম বা ফাংশনটি প্রতিটি প্লেয়ারের চূড়ান্ত স্কোরকে একই ক্রমে আউটপুট সরবরাহ করতে পারে যেমন ইনপুট সরবরাহ করা হয়েছিল।
  • স্কোরগুলি স্পেস বা নিউলাইন দ্বারা পৃথক করা উচিত। ট্রেলিং স্পেস বা নিউলাইন অনুমোদিত।

উদাহরণ:

ইনপুট: ['rrpsrpsrps', 'rpppsprrpr']

আউটপুট: 5 9(টার্নগুলি হল rvr rvp pvs svp pvr rvp pvs)

ইনপুট: ['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss']

আউটপুট: 13 17 12(ম্যাচগুলি 5-9(প্রথম বনাম ২ য় বনাম), 8-6(প্রথম বনাম তৃতীয়) এবং 8-6(২ য় বনাম তৃতীয়)

এটি কোড-গল্ফ তাই সংক্ষিপ্ত এন্ট্রি জিততে পারে।


নাম্বার ফাইলে অনুপ্রাণিত? ;-)
জাকুবে

দ্বিতীয় উদাহরণটি কি সঠিক? আমি মনে করি যে 1 মটি 3 য় এর সাথে হেরে 6-8এবং দ্বিতীয়টি তৃতীয়টির সাথে হেরে 6-8
জাকুবে

@ জাকুব সংশোধিত উদাহরণ ইনপুট। ধন্যবাদ.
এলোমেলো

উত্তর:


2

পাইথন 2: 201 188 অক্ষর

def f(Q):c=lambda m:'rps'.index(m);l=len(Q);r=[0]*l;i=0;exec'p,q=i/l,i%l;m,n=c(Q[p][0]),c(Q[q][0]);exec"r[p]+=(p!=q)*(m+1-n)%3;m,n=c(Q[p][m*3+n+1]),c(Q[q][n*3+m+1]);"*7;i+=1;'*l*l;return r

প্রোগ্রামের যুক্তিবিজ্ঞান: আমি নম্বরে অক্ষর রূপান্তর করুন ( r=0, p=1, s=2)। mপ্রথমটির nসংখ্যা, দ্বিতীয় ব্যক্তির সংখ্যা। কারণ গেমটি চক্রযুক্ত, (m-n)%3ইতিমধ্যে ফলাফল নির্ধারণ করে। এবং অবশ্যই, আমি এক এক করে ফলাফলটি স্থানান্তর করতে পারি f=(m+1-n)%3। এখন f=0অর্থ, দ্বিতীয় প্লেয়ার qজিতেছে, f=1মানে একটি টাই এবং f=2প্রথম প্লেয়ার pজিতেছে। এটি ইতিমধ্যে প্লেয়ার 1 এর স্কোর। সুতরাং আমার কেবল (p!=q)*(m+1-n)%3প্রতিটি খেলোয়াড়ের জন্য সমস্ত মান যুক্ত করা দরকার ।

এটি দিয়ে পরীক্ষা করুন print f(['rrpsrpsrps', 'rpppsprrpr', 'ssssssssss'])

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