অনেকে আরপিএসকে সুযোগের খেলা হিসাবে বিবেচনা করে। উভয় খেলোয়াড় যদি অপ্রত্যাশিতভাবে খেলেন তবে এলোমেলোভাবে খেলাটাই সেরা কৌশল। যাইহোক, আসুন এটির পূর্বাভাসের কিছুটা প্রবর্তন করি।
প্রতিটি বোটের সাথে অন্য বটটি একই সাথে কী খেলতে চলেছে তা বলার সুযোগ থাকবে। তারপরে একটি বিরতি রয়েছে যার মধ্যে প্রতিটি বট জানতে পারবে যে অন্য খেলোয়াড় কী ঘোষণা করেছিল। এটি যদি সেই অস্ত্রটি খেলায় এটি ঘোষণা করে যে এটি জয় পরাজয়ের জন্য বা ড্রয়ের জন্য এটির পয়েন্ট ছাড়াও একটি পয়েন্ট অর্জন করবে।
একটি জয়ের মূল্য দুটি পয়েন্ট, একটি ড্র, একটি পয়েন্ট এবং ক্ষতি 0 পয়েন্ট।
Honest Bot Dishonest
Win 3 2
Draw 2 1
Loss 1 0
সত্যনিষ্ঠ হওয়া আপনার পক্ষে সবচেয়ে বেশি আগ্রহী (তবে আপনার প্রতিপক্ষ আপনাকে বিশ্বাস করে না তা নিশ্চিত করে তোলা)।
ম্যাচগুলি একটি রাউন্ড রবিন ফর্ম্যাটে খেলবে এবং উদ্দেশ্যটি হ'ল আপনি খেলানো ম্যাচগুলিতে আপনার নিজের মোট স্কোরকে সর্বাধিক করে তোলা।
I / O ফর্ম্যাট:
- আপনার বটটি একটি পাইথন 2.7 ফাংশন হবে যা 4 টি আর্গুমেন্ট গ্রহণ করে এবং এর একটি অনন্য নাম থাকতে হবে (যা আপনার জমা দেওয়ার উপস্থাপনের জন্য ব্যবহৃত হবে)।
- প্রথম দুটি যুক্তি সর্বদা যথাযথভাবে থাকবে: প্রতিপক্ষের অতীত চলনগুলি, তারপরে আপনার অতীত চলনগুলি। এগুলি প্রথম থেকে সাম্প্রতিক রাউন্ডের ক্রম অনুসারে একটি তালিকা থাকবে, প্রতি সূচকের সাথে তালিকার একটি তালিকা থাকবে প্রতিপক্ষের দাবি অনুযায়ী তারা যে পদক্ষেপ নেবে, তারপরে তারা বাস্তবে যে পদক্ষেপ নেবে।
- পরবর্তী দুটি যুক্তি আপনার বটকে এটি নির্ধারণ করতে দেয় যে এটি "সৎ" রাউন্ড বা "আসল" রাউন্ড কিনা। যদি এটি "সৎ" রাউন্ড হয় তবে তারা উভয়ই কোনও হবে না। যদি এটি "সত্যিকারের" গোল হয় তবে তারা তা করবে, যাতে আপনার প্রতিপক্ষ ঘোষিত যে পদক্ষেপটি তারা তৈরি করবে এবং তারপরে আপনি ঘোষণা করেছিলেন যে আপনি কী করবেন would
- সমস্ত আর্গুমেন্ট বা আর্গুমেন্টগুলির অংশ যা চালকে প্রতিনিধিত্ব করে যথাক্রমে শিলা, কাগজ এবং কাঁচি উপস্থাপন করতে "আর", "পি" এবং "এস" ব্যবহার করবে।
- আপনার ফাংশনটি রকের জন্য একটি "আর", কাগজের জন্য "পি", বা কাঁচিগুলির জন্য "এস" ফিরবে। যে মানগুলি অন্য মানগুলি ফেরত দেওয়ার ক্ষমতা রাখে তাদের অযোগ্য ঘোষণা করা হবে।
- প্রতিটি বট প্রতিটি অন্য বটের বিরুদ্ধে 200 বার চালানো হবে এবং 100 বার নিজেই চালানো হবে। গোলটি প্রতিযোগিতা শেষে সর্বাধিক পয়েন্ট সহ বট হওয়া।
- মন্তব্যে আলোচনার ক্ষেত্রে, জমাগুলি কোনও ফাইল থেকে পড়তে বা লিখতে না পারে, বা কোনও উপায়ে বিরোধী কোডটি নাশকতা বা পড়তে পারে না।
উদাহরণ:
এই চারটি উদাহরণ বট যা আমি দ্রুত একসাথে রেখেছি। তারা অতিরিক্ত বট হিসাবে প্রতিযোগিতায় যোগ দেবে। আপনি যদি শেষের কাছে হেরে যান তবে আপনার কিছু কাজ করতে হবে।
def honestpaper(I,dont,care,about_these):
return "P"
def honestrock(I,dont,care,about_these):
return "R"
def honestscissors(I,dont,care,about_these):
return "S"
import random
def randombot(I,dont,care,about_these):
return random.choice(["R","P","S"])
নিয়ন্ত্রক:
এবং এই নিয়ামকটি আমি ব্যবহার করব। নতুন জমাগুলি শুরুতে আমদানি করা হবে এবং বট_ম্যাপ অভিধানে যুক্ত হবে।
from honestrock import honestrock
from honestpaper import honestpaper
from honestscissors import honestscissors
from randombot import randombot
bot_map = {
0:honestrock, 1:honestpaper, 2:honestscissors, 3:randombot
}
player_num=len(bot_map)
def real(history1,history2,number,honest1,honest2):
return bot_map[number](history1,history2,honest1,honest2)
def honest(history1,history2,number):
return bot_map[number](history1,history2,None,None)
def play_match(num1,num2):
history1=[]
history2=[]
score1=0
score2=0
for x in range(250):
h1=honest(history2,history1,num1)
h2=honest(history1,history2,num2)
r1=real(history2,history1,num1,h2,h1)
r2=real(history1,history2,num2,h1,h2)
if h1==r1: score1+=1
if h2==r2: score2+=1
if r1==r2: score1+=1; score2+=1
elif r1=="R":
if r2=="P": score2+=2
else: score1+=2
elif r1=="P":
if r2=="S": score2+=2
else: score1+=2
else:
if r2=="R": score2+=2
else: score1+=2
history1.append([h1,r1])
history2.append([h2,r2])
return score1,score2
scores = []
for x in range(player_num):
scores.append(0)
for _ in range(100):
for x in range(player_num):
for y in range(player_num):
scorex,scorey=play_match(x,y)
scores[x]+=scorex
scores[y]+=scorey
for score in scores:
print score
চূড়ান্ত স্কোর:
csbot 3430397
thompson 3410414
rlbot 3340373
have_we_been_here_before 3270133
mason 3227817
deepthought 3019363
adaptive_bot 2957506
THEbot 2810535
dontlietome 2752984
irememberhowyoulie 2683508
learningbot4 2678388
betrayal 2635901
averager 2593368
honestrandom 2580764
twothirds 2568620
mirrorbot 2539016
tit4tat 2537981
honestscissors 2486401
trusting_bot 2466662
rotate_scissors 2456069
rotate_paper 2455038
rotate_rock 2454999
honestpaper 2412600
honestrock 2361196
rockBot 2283604
trustingRandom 2266456
user5957401bot 2250887
randombot 2065943
Dx 1622238
liarliar 1532558
everybodylies 1452785