এই টাস্কটি প্রথম পর্যায়ক্রমিক প্রিমিয়ার প্রোগ্রামিং ধাঁধা পুশ-এর অংশ এবং এটি নতুন কিং-অফ-পার্বত্য চ্যালেঞ্জ-প্রকারের প্রস্তাবনা হিসাবে চিহ্নিত ।
কাজটি হ'ল পুনরাবৃত্তি হওয়া বন্দীর দ্বিধা অন্যান্য প্রবেশকারীদের চেয়ে ভাল খেলতে একটি প্রোগ্রাম লেখার জন্য।
ভিঞ্জি দেখুন। আমরা আপনার সেলমেট জানি --- তার নাম কি? হ্যাঁ ম্যাকওয়ংস্কি, নিপ্পো-আইরিশ-ইউক্রেনীয় চালক - এটি কিছুটা নির্ভর করে এবং আপনি জানেন যে এটি কী।
আমরা এখানে সুন্দর হওয়ার চেষ্টা করছি, ভিনি তোমাকে সুযোগ দেই
যদি তিনি আমাদের প্ল্যানিন 'বলে থাকেন তবে আমরা আপনাকে ভাল কাজের অ্যাসাইনমেন্টটি দেখতে পাব।
এবং যদি আপনি না ...
গেমের বিধি
- প্রতিযোগিতাটিতে একবারে (স্ব নাটক সহ) দু'জন প্রতিযোগীর পূর্ণ রাউন্ড রবিন (সমস্ত সম্ভাব্য জুটি) থাকে of
- প্রতিটি জুটির মধ্যে 100 টি রাউন্ড খেলা হয়
- প্রতিটি রাউন্ডে প্রতিটি খেলোয়াড়কে এই বিষয়ে অন্যান্য খেলোয়াড়ের উদ্দেশ্য না জেনে অন্য খেলোয়াড়ের সাথে সহযোগিতা করা বা তাদের সাথে বিশ্বাসঘাতকতার মধ্যে নির্বাচন করতে বলা হয়, তবে এই প্রতিপক্ষের বিরুদ্ধে খেলানো পূর্ববর্তী রাউন্ডগুলির ফলাফলগুলির স্মৃতি দিয়ে।
- সম্মিলিত পছন্দের ভিত্তিতে প্রতিটি রাউন্ডের জন্য পয়েন্টগুলি প্রদান করা হয়। উভয় খেলোয়াড় সহযোগিতা করলে তারা প্রত্যেকে 2 পয়েন্ট পায় get পারস্পরিক বিশ্বাসঘাতকতা প্রতি 1 পয়েন্ট উপার্জন করে। মিশ্র ক্ষেত্রে, বিশ্বাসঘাতক খেলোয়াড়কে 4 পয়েন্ট দেওয়া হয় এবং সহযোগীকে 1 দ্বারা শাস্তি দেওয়া হয়।
- একটি কাজ "অফিসিয়াল" ম্যাচটি আমি কাজ করতে পারি এবং জমা দেওয়া "বিজয়ী" বিজয়ী নির্বাচন করতে ব্যবহৃত হতে পারে এমন সমস্ত জমা দিয়ে পোস্ট করার পরে 10 দিনের বেশি আগে চালানো হবে না। আমার কাছে একটি ম্যাক ওএস 10.5 বাক্স রয়েছে, সুতরাং পসিক্স সমাধানগুলিতে কাজ করা উচিত তবে লিনাক্সিজম রয়েছে যা তা নয়। তেমনি, win32 এপিআইয়ের জন্য আমার কোনও সমর্থন নেই। আমি জিনিসগুলি ইনস্টল করার জন্য একটি প্রাথমিক প্রচেষ্টা করতে ইচ্ছুক, তবে একটি সীমা রয়েছে। আমার সিস্টেমের সীমা কোনওভাবেই গ্রহণযোগ্য প্রতিক্রিয়ার সীমাবদ্ধতা উপস্থাপন করে না, কেবল "অফিশিয়াল" ম্যাচে অন্তর্ভুক্ত করা হবে।
প্রোগ্রামার ইন্টারফেস
- কমান্ড লাইন থেকে চালানো যেতে পারে এমন প্রোগ্রামগুলির আকারে এন্ট্রি হওয়া উচিত; সিদ্ধান্তটি অবশ্যই স্ট্যান্ডার্ড আউটপুটে প্রোগ্রামের (একক!) আউটপুট। এই প্রতিপক্ষের সাথে পূর্ববর্তী রাউন্ডগুলির ইতিহাস কমান্ড-লাইন আর্গুমেন্ট হিসাবে উপস্থাপিত হবে।
- আউটপুট হয় "সি" ( বাছাইয়ের জন্য ) বা "টি" ( সমস্ত বলার জন্য )।
- ইতিহাসটি হ'ল অক্ষরের একক স্ট্রিং যা পূর্ববর্তী রাউন্ডগুলিকে প্রতিনিধিত্ব করে সর্বাধিক সাম্প্রতিক রাউন্ডগুলিতে স্ট্রিংয়ের প্রথম দিকে। চরিত্রগুলি হয়
- "কে" ( বিশ্বাসের জন্য পারস্পরিক সহযোগিতা বোঝায়)
- "আর" ( ইঁদুরের জন্য বি @ এসডি @ আরডি আমাকে বিক্রি করে দিয়েছে! )
- "এস" ( চুষার জন্য ! এর অর্থ আপনি বিশ্বাসঘাতকতায় উপকৃত হয়েছেন)
- "ই" ( প্রত্যেকে পারস্পরিক বিশ্বাসঘাতকতার জন্য প্রথম এক সন্ধান করছে)
বন্ধনী
চারজন খেলোয়াড় লেখক সরবরাহ করবেন
- দেবদূত - সর্বদা সহযোগিতা করে
- শয়তান - সর্বদা কথা
- টিটফোর্ড্যাট - প্রথম রাউন্ডে সহযোগিতা করে তারপরে সর্বদা সর্বশেষ রাউন্ডে যেমন হয়েছিল
- এলোমেলো - 50/50
যাতে আমি যে সমস্ত এন্ট্রি চালাতে পারি তা যুক্ত করব।
মোট স্কোর হ'ল সমস্ত প্রতিপক্ষের বিরুদ্ধে মোট স্কোর (শুধুমাত্র একবারে স্ব-খেলানো এবং গড় স্কোর ব্যবহার সহ)।
সমাগম
(বর্তমান ২ মে ২০১১ সন্ধ্যা :00:০০)
সিক্রেট হ্যান্ডশেক | অ্যান্টি-টি 42 টি মিসাইল | অবিশ্বাস (রূপ) | অ্যান্টি হ্যান্ডশেক | ছোট্ট লিস্পার | রূপান্তর | হাঙর | প্রোবাবিমেটিক | পাভলভ - উইন স্টে, লস স্যুইচ | চোরদের মধ্যে সম্মান | সহায়তা ভ্যাম্পায়ার | দ্রুড | ছোট স্কিমার | বাইগোনস | টু টু ট্যাট | সিম্পলটন |
গোল-দাতা
#! /usr/bin/python
#
# Iterated prisoner's dilemma King of Hill Script Argument is a
# directory. We find all the executables therein, and run all possible
# binary combinations (including self-plays (which only count once!)).
#
# Author: dmckee (https://codegolf.stackexchange.com/users/78/dmckee)
#
import subprocess
import os
import sys
import random
import py_compile
###
# config
PYTHON_PATH = '/usr/bin/python' #path to python executable
RESULTS = {"cc":(2,"K"), "ct":(-1,"R"), "tc":(4,"S"), "tt":(1,"E")}
def runOne(p,h):
"""Run process p with history h and return the standard output"""
#print "Run '"+p+"' with history '"+h+"'."
process = subprocess.Popen(p+" "+h,stdout=subprocess.PIPE,shell=True)
return process.communicate()[0]
def scoreRound(r1,r2):
return RESULTS.get(r1[0]+r2[0],0)
def runRound(p1,p2,h1,h2):
"""Run both processes, and score the results"""
r1 = runOne(p1,h1)
r2 = runOne(p2,h2)
(s1, L1), (s2, L2) = scoreRound(r1,r2), scoreRound(r2,r1)
return (s1, L1+h1), (s2, L2+h2)
def runGame(rounds,p1,p2):
sa, sd = 0, 0
ha, hd = '', ''
for a in range(0,rounds):
(na, ha), (nd, hd) = runRound(p1,p2,ha,hd)
sa += na
sd += nd
return sa, sd
def processPlayers(players):
for i,p in enumerate(players):
base,ext = os.path.splitext(p)
if ext == '.py':
py_compile.compile(p)
players[i] = '%s %sc' %( PYTHON_PATH, p)
return players
print "Finding warriors in " + sys.argv[1]
players=[sys.argv[1]+exe for exe in os.listdir(sys.argv[1]) if os.access(sys.argv[1]+exe,os.X_OK)]
players=processPlayers(players)
num_iters = 1
if len(sys.argv) == 3:
num_iters = int(sys.argv[2])
print "Running %s tournament iterations" % (num_iters)
total_scores={}
for p in players:
total_scores[p] = 0
for i in range(1,num_iters+1):
print "Tournament %s" % (i)
scores={}
for p in players:
scores[p] = 0
for i1 in range(0,len(players)):
p1=players[i1];
for i2 in range(i1,len(players)):
p2=players[i2];
# rounds = random.randint(50,200)
rounds = 100
#print "Running %s against %s (%s rounds)." %(p1,p2,rounds)
s1,s2 = runGame(rounds,p1,p2)
#print (s1, s2)
if (p1 == p2):
scores[p1] += (s1 + s2)/2
else:
scores[p1] += s1
scores[p2] += s2
players_sorted = sorted(scores,key=scores.get)
for p in players_sorted:
print (p, scores[p])
winner = max(scores, key=scores.get)
print "\tWinner is %s" %(winner)
total_scores[p] += 1
print '-'*10
print "Final Results:"
players_sorted = sorted(total_scores,key=total_scores.get)
for p in players_sorted:
print (p, total_scores[p])
winner = max(total_scores, key=total_scores.get)
print "Final Winner is " + winner
- আমার ভয়ঙ্কর অজগর সম্পর্কে অভিযোগগুলি স্বাগত, কারণ আমি নিশ্চিত যে এটি একাধিক উপায়ে চুষেছে
- বাগ সংশোধন স্বাগত
স্কোরার চেঞ্জলগ:
- বাছাই করা খেলোয়াড় এবং স্কোরগুলি মুদ্রণ করুন এবং একটি বিজয়ী ঘোষণা করুন (4/29, কেসি)
- একাধিক টুর্নামেন্টগুলি
./score warriors/ num_tournaments)
) চ্ছিকভাবে চালান ( ) ডিফল্ট = 1, পাইথন উত্সগুলি সনাক্ত ও সংকলন করুন (4/29, কেসি) - বিশেষত বোবা বাগটি ঠিক করুন যাতে দ্বিতীয় খেলোয়াড় একটি ভুল ইতিহাস পাস করছিল। (4/30, ডিএমেকে; ধন্যবাদ জোশ)
প্রাথমিক যোদ্ধা
উদাহরণস্বরূপ, এবং যাতে ফলাফল যাচাই করা যায়
ফেরেশতা
#include <stdio.h>
int main(int argc, char**argv){
printf("c\n");
return 0;
}
অথবা
#!/bin/sh
echo c
অথবা
#!/usr/bin/python
print 'c'
শয়তান
#include <stdio.h>
int main(int argc, char**argv){
printf("t\n");
return 0;
}
এলোমেলো
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
int main(int argc, char**argv){
srandom(time(0)+getpid());
printf("%c\n",(random()%2)?'c':'t');
return 0;
}
নোট করুন যে স্কোরার যোদ্ধাকে এক সেকেন্ডে অনেকবার পুনরায় আবেদন করতে পারে, তাই পিআরএনজি বীজ করার জন্য যদি সময় ব্যবহার করা হয় তবে ফলাফলের এলোমেলোতার জন্য বীমা করার জন্য একটি গুরুতর প্রচেষ্টা করতে হবে।
TitForTat
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char**argv){
char c='c';
if (argv[1] && (
(argv[1][0] == 'R') || (argv[1][0] == 'E')
) ) c='t';
printf("%c\n",c);
return 0;
}
প্রথমটি যা ইতিহাসের সাথে আসলে কিছু করে ।
কেবল সরবরাহিত যোদ্ধাদের ফলনের ভিত্তিতে স্কোরার চালানো
Finding warriors in warriors/
Running warriors/angel against warriors/angel.
Running warriors/angel against warriors/devil.
Running warriors/angel against warriors/random.
Running warriors/angel against warriors/titfortat.
Running warriors/devil against warriors/devil.
Running warriors/devil against warriors/random.
Running warriors/devil against warriors/titfortat.
Running warriors/random against warriors/random.
Running warriors/random against warriors/titfortat.
Running warriors/titfortat against warriors/titfortat.
('warriors/angel', 365)
('warriors/devil', 832)
('warriors/random', 612)
('warriors/titfortat', 652)
শয়তান, সে হ'ল একটি নৈপুণ্য এবং সুন্দর ছেলেরা সম্ভবত শেষ পর্যন্ত আসবে।
ফলাফল
"অফিসিয়াল" রান
('angel', 2068)
('helpvamp', 2295)
('pavlov', 2542)
('random', 2544)
('littleschemer', 2954)
('devil', 3356)
('simpleton', 3468)
('secrethandshake', 3488)
('antit42t', 3557)
('softmajo', 3747)
('titfor2tats', 3756)
('convergence', 3772)
('probabimatic', 3774)
('mistrust', 3788)
('hyperrationalwasp', 3828)
('bygones', 3831)
('honoramongthieves', 3851)
('titfortat', 3881)
('druid', 3921)
('littlelisper', 3984)
('shark', 4021)
('randomSucker', 4156)
('gradual', 4167)
Winner is ./gradual
return (s1, L1+h1), (s2, L2+h1)
করা কি সহজ হবে ? // কাট-এন-পেস্ট ভুল বা সমান বোকামি কিছু। Sheesh! return (s1, L1+h1), (s2, L2+h2)
L2+h2
L2+h1