কয়েদীর দ্বিধা v.3 - পেট্রি দ্বিধা


17

একজন পাগল বিজ্ঞানী সবেমাত্র একটি নতুন প্রজাতির ব্যাকটিরিয়াম তৈরি করেছেন! তিনি এর নাম নোবলস ভদ্রলোক রাখার সিদ্ধান্ত নিয়েছেন, এর আচরণ পর্যবেক্ষণ করার পরে। তবে, তার ব্যাকটেরিয়াগুলি খাদ্যের অভাব থেকে রক্ষা পেয়েছে এবং যুদ্ধের ঘোষণা দিয়েছে, কারণ তারা নিজের অনুলিপি তৈরি করতে পর্যাপ্ত খাবারের জন্য অন্যান্য জীবাণুর লাশ সংগ্রহ করতে সক্ষম হয়। এই ব্যাকটিরিয়ার বিভিন্ন ধরণের বিভিন্ন উপ-প্রজাতি রয়েছে, যাদের কারাগারের দ্বিমা, তাদের পছন্দের খেলাটি খেলতে বিভিন্ন কৌশল রয়েছে। প্রতিটি পৃথক উপ-প্রজাতি থেকে পাঁচটি ব্যাকটিরিয়া রয়েছে। কারাগারের দ্বিধায়, দুজন খেলোয়াড় প্রত্যেকে একই সাথে ত্রুটি বা সহযোগিতা বেছে নেয়। যদি একজন খেলোয়াড় সহযোগিতা চয়ন করে এবং অন্যটি ডিফল্ট চয়ন করে, খেলাপি 2 পয়েন্ট পায়, এবং সহযোগী 3 পয়েন্ট হারাবে। উভয় খেলোয়াড় যদি সহযোগিতা চয়ন করেন তবে উভয় খেলোয়াড় একটি পয়েন্ট পান। উভয় খেলোয়াড় যদি ডিফল্ট চয়ন করেন তবে উভয় খেলোয়াড়ই 1 পয়েন্ট হারাবেন।

নোবেল ভদ্রলোক হওয়ার কারণে, ব্যাকটিরিয়ারা ইটরেটেড প্রিজনারের দ্বিধায় দ্বি 200 টি দীর্ঘ গেম খেলে এই যুদ্ধের লড়াইয়ের সিদ্ধান্ত নিয়েছে। প্রতিটি দ্বন্দ্বের পরাজয়কারী আত্মহত্যা করবে, বিজয়ীকে নিজের ক্লোন করতে দেবে। টাই হওয়ার সময়, উভয় ব্যাকটেরিয়া জীবিত থাকবে, তবে উভয়ই নিজের ক্লোন করতে সক্ষম হবে না। এছাড়াও, একটি ম্যাচ থেকে সমস্ত ব্যাকটিরিয়া তাদের পয়েন্টের 10% পরের ম্যাচে বহন করে। একটি ক্লোন ব্যাকটিরিয়ামের পয়েন্টগুলি বহন করে এটি দ্বারা ক্লোন করা হয়েছিল। এছাড়াও, প্রতি দশে একটি করে সম্ভাবনা রয়েছে যে একটি জীবাণু 0 টি বোনাস পয়েন্ট সহ একটি অন্য জীবাণুতে অন্য উপ-প্রজাতিতে রূপান্তরিত করবে (যদি আমি এর এলোমেলোতা সম্পর্কে অভিযোগ পাই তবে আমি এটি সরাতে পারি)। ব্যাকটেরিয়া দশবারের দশবারের উপজাতির সংখ্যার সমান এই দ্বৈত খেলার পরে, পাগল বিজ্ঞানী দুর্ঘটনাক্রমে ব্যাকটিরিয়ায় থাকা পেট্রি থালাটি ফেলে দেন, এবং সমস্ত ব্যাকটিরিয়া তাদের দ্বন্দ্ব শেষ করে খাদ্যের নতুন উত্স অর্জন করে। এটি সাধারণ পুনরাবৃত্তি হওয়া বন্দীর দ্বিধাদ্বন্দ্বের প্রতিযোগিতা থেকে আলাদা, কারণ এতে সামগ্রিকভাবে সর্বাধিক পয়েন্ট পাওয়ার চেষ্টা করার চেয়ে ক্যারিওভার পয়েন্ট সহ 1v1 দ্বৈত জড়িত। প্রদত্ত কৌশলটি কতটা কার্যকর তা এটি একটি বড় পার্থক্য করে।

প্রতিটি ব্যাকটিরিয়াম ফর্ম্যাটের পরিবর্তনের শুরুতে ইনপুট পাবেন: (টার্নিং নম্বর, বর্তমান পয়েন্টস, শত্রু পয়েন্টস, আপনার পূর্ববর্তী চালগুলি [স্ট্রিংয়ে, সহযোগিতার জন্য "গ" অক্ষর এবং ত্রুটির জন্য "ডি" অক্ষর ব্যবহার করুন ], শত্রুদের পূর্ববর্তী চালগুলি [একই বিন্যাসে])

এখানে চারটি নমুনা কৌশল প্রবেশ করানো হবে। আমি আসলেই মনে করি যে ডিফেক্টর খুব সহজ হলেও এটি জিততে পারে।

তাত জন্য তৃতীয়

def titfortatfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter==0 or enlist[counter-1] == "c":
        return "c"
    else:
        return "d"

RandomPick

from random import choice
def randompickfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter == 199:
        return "d"
    else:
        return choice(["d", "c"])

সহকর্মী

def cooperatorfunc(counter, mypoints, enpoints, mylist, enlist):
    return "c"

দলত্যাগী

def defectorfunc(counter, mypoints, enpoints, mylist, enlist):
    return "d"

সমস্ত জমাটি অবশ্যই পাইথন ২.7 ফাংশন আকারে থাকতে হবে, নামটি ফাঁকা ছাড়াই জমা দেওয়ার নাম সহ funcশেষ হওয়া উচিত। যদি কেউ কোনও ভিন্ন ভাষায় উত্তর জমা দিতে চান তবে দয়া করে এটি সিউডো কোডে প্রবেশ করুন, আমার একবার সময় পেলে আপনার উত্তরের সম্পাদনায় পাইথনে রূপান্তর করতে, বা আমার নিয়ামকের সাথে আপনার ভাষায় ইন্টারফেস করার নির্দেশনা দিন যা 4 জুন হিসাবে সমস্ত জমা দেওয়ার জন্য নীচে সেট আপ পাওয়া গেছে।

from titfortat import titfortatfunc
from randompick import randompickfunc
from cooperator import cooperatorfunc
from defector import defectorfunc
from luckytitfortat import luckytitfortatfunc
from randomtitfortat import randomtitfortatfunc
from remorsefulaggressor import remorsefulaggressorfunc
from everyother import everyotherfunc
from niceguy import niceguyfunc
from titfortatbackstab import titfortatbackstabfunc
from gentleDefector import gentleDefectorfunc
from anticapitalist import anticapitalistfunc
from grimtrigger import grimtriggerfunc
from bizzaro import bizzarofunc
from neoanticapitalist import neoanticapitalistfunc
from bittertat import bittertatfunc
from teamer import teamerfunc
from copyfirst import copyfirstfunc
from exploitivetat import exploitativetatfunc
from defectorv2 import defectorv2func
from crazytat import crazytatfunc
from randomchoicev2 import randomchoicev2func
from twotitsforatat import twotitsforatatfunc
from threetitsforatat import threetitsforatatfunc
from fourtitsforatat import fourtitsforatatfunc
from fivetitsforatat import fivetitsforatatfunc
from sixtitsforatat import sixtitsforatatfunc
from tentitsforatat import tentitsforatatfunc
from theelephant import theelephantfunc
from xbittertat import xbittertatfunc
from fifteentitsforatat import fifteentitsfortatfunc
from twentytitsforatat import twentytitsforatatfunc
from fox import foxfunc
from onehundredfortysixtitsforatat import onehundredfourtysixtitsforatatfunc
from gameofthrones import gameofthronesfunc
from boy import boyfunc
from grimace import grimacefunc
from fiftytitsforatat import fiftytitsfortatfunc
from soreloser import soreloserfunc
from everyotherd import everyotherdfunc
from fiftythreetitsfortat import fiftythreetitsfortatfunc
from twentyfivetitsfortat import twentyfivetitsfortatfunc
from handshake import handshakefunc
from anty import antyfunc
from fiftyfourtitsforatat import fiftyfourtitsfortatfunc
from kindatitsfortat import kindatitsfortatfunc

import random

players = 38

rounds = players*10

def runcode(num, points1, points2, history1, history2, cell):
    ans = ""
    if cell == 0:
        ans = titfortatfunc(num, points1, points2, history1, history2)
    elif cell == 1:
        ans = randompickfunc(num, points1, points2, history1, history2)
    elif cell == 2:
        ans = cooperatorfunc(num, points1, points2, history1, history2)
    elif cell == 3:
        ans = defectorfunc(num, points1, points2, history1, history2)
    elif cell == 4:
        ans = luckytitfortatfunc(num, points1, points2, history1, history2)
    elif cell == 5:
        ans = randomtitfortatfunc(num, points1, points2, history1, history2)
    elif cell == 6:
        ans = remorsefulaggressorfunc(num, points1, points2, history1, history2)
    elif cell == 7:
        ans = everyotherfunc(num, points1, points2, history1, history2)
    elif cell == 8:
        ans = niceguyfunc(num, points1, points2, history1, history2)
    elif cell == 9:
        ans = titfortatbackstabfunc(num, points1, points2, history1, history2)
    elif cell == 10:
        ans = gentleDefectorfunc(num, points1, points2, history1, history2)
    elif cell == 11:
        ans = anticapitalistfunc(num, points1, points2, history1, history2)
    elif cell == 12:
        ans = grimtriggerfunc(num, points1, points2, history1, history2)
    elif cell == 13:
        ans = bizzarofunc(num, points1, points2, history1, history2)
    elif cell == 14:
        ans = neoanticapitalistfunc(num, points1, points2, history1, history2)
    elif cell == 15:
        ans = tentitsforatatfunc(num, points1, points2, history1, history2)
    elif cell == 16:
        ans = bittertatfunc(num, points1, points2, history1, history2)
    elif cell == 17:
        ans = copyfirstfunc(num, points1, points2, history1, history2)
    elif cell == 18:
        ans = exploitativetatfunc(num, points1, points2, history1, history2)
    elif cell == 19:
        ans = sixtitsforatatfunc(num, points1, points2, history1, history2)
    elif cell == 20:
        ans = fifteentitsfortatfunc(num, points1, points2, history1, history2)
    elif cell == 21:
        ans = fivetitsforatatfunc(num, points1, points2, history1, history2)
    elif cell == 22:
        ans = twentytitsforatatfunc(num, points1, points2, history1, history2)
    elif cell == 23:
        ans = threetitsforatatfunc(num, points1, points2, history1, history2)
    elif cell == 24:
        ans = fiftyfourtitsfortatfunc(num, points1, points2, history1, history2)
    elif cell == 25:
        ans = theelephantfunc(num, points1, points2, history1, history2)
    elif cell == 26:
        ans = xbittertatfunc(num, points1, points2, history1, history2)
    elif cell == 27:
        ans = foxfunc(num, points1, points2, history1, history2)
    elif cell == 28:
        ans = gameofthronesfunc(num, points1, points2, history1, history2)
    elif cell == 29:
        ans = boyfunc(num, points1, points2, history1, history2)
    elif cell == 30:
        ans = grimacefunc(num, points1, points2, history1, history2)
    elif cell == 31:
        ans = soreloserfunc(num, points1, points2, history1, history2)
    elif cell == 32:
        ans = everyotherdfunc(num, points1, points2, history1, history2)
    elif cell == 33:
        ans = twentyfivetitsfortatfunc(num, points1, points2, history1, history2)
    elif cell == 34:
        ans = fiftythreetitsfortatfunc(num, points1, points2, history1, history2)
    elif cell == 35:
        ans = handshakefunc(num, points1, points2, history1, history2)
    elif cell == 36:
        ans = antyfunc(num, points1, points2, history1, history2)
    elif cell == 37:
        ans = kindatitsfortatfunc(num, points1, points2, history1, history2)


    return ans

def fight(l1,l2):
    num1,num2=l1[0],l2[0]
    points1,points2=l1[1],l2[1]
    history1 = ""
    history2 = ""

    for num in range(200):
        p1 = runcode(num, points1, points2, history1, history2, num1)
        p2 = runcode(num, points2, points1, history2, history1, num2)

        history1+=p1
        history2+=p2

        if p1 == "c" and p2 == "c":
            points1 += 1
            points2 += 1
        elif p1 == "c" and p2 == "d":
            points1 -= 3
            points2 += 2
        elif p1 == "d" and p2 == "c":
            points1 += 2
            points2 -= 3
        elif p1 == "d" and p2 == "d":
            points1 -= 1
            points2 -= 1

    if points1 > points2:
        return [l1[0], points1/10], [l1[0], points1/10]
    elif points1 < points2:
        return [l2[0], points2/10], [l2[0], points2/10]
    else:
        return [l1[0], points1/10], [l2[0], points2/10]

def rounddoer(bots):
    bots2=[]
    for x in range(len(bots)):
        if x%2==0:
            out1, out2 = fight(bots[x], bots[x-1])
            bots2.append(out1)
            bots2.append(out2)

    return bots2

def gamedoer():

    bots=[[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],[12,0],[13,0],[14,0],[15,0],[16,0],[17,0],[18,0],[19,0],[20,0],[21,0],[22,0],[23,0],[24,0],[25,0],[26,0],[27,0],[28,0],[29,0],[30,0],[31,0],[32,0],[33,0],[34,0],[35,0],[36,0],[37,0],[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],[12,0],[13,0],[14,0],[15,0],[16,0],[17,0],[18,0],[19,0],[20,0],[21,0],[22,0],[23,0],[24,0],[25,0],[26,0],[27,0],[28,0],[29,0],[30,0],[31,0],[32,0],[33,0],[34,0],[35,0],[36,0],[37,0],[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],[12,0],[13,0],[14,0],[15,0],[16,0],[17,0],[18,0],[19,0],[20,0],[21,0],[22,0],[23,0],[24,0],[25,0],[26,0],[27,0],[28,0],[29,0],[30,0],[31,0],[32,0],[33,0],[34,0],[35,0],[36,0],[37,0],[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],[12,0],[13,0],[14,0],[15,0],[16,0],[17,0],[18,0],[19,0],[20,0],[21,0],[22,0],[23,0],[24,0],[25,0],[26,0],[27,0],[28,0],[29,0],[30,0],[31,0],[32,0],[33,0],[34,0],[35,0],[36,0],[37,0],[0,0],[1,0],[2,0],[3,0],[4,0],[5,0],[6,0],[7,0],[8,0],[9,0],[10,0],[11,0],[12,0],[13,0],[14,0],[15,0],[16,0],[17,0],[18,0],[19,0],[20,0],[21,0],[22,0],[23,0],[24,0],[25,0],[26,0],[27,0],[28,0],[29,0],[30,0],[31,0],[32,0],[33,0],[34,0],[35,0],[36,0],[37,0]]
    random.shuffle(bots)
    counter=0

    while counter < rounds:

        counter += 1
        bots = rounddoer(bots)

        if random.randint(0,10) == 9:
            bots[random.randint(0, players*5)-1] = [random.randint(0, players-1), 0]

        random.shuffle(bots)

##        for item in bots:
##            print str(item[0]) + " with " + str(item[1]) + " bonus points."

    return bots

a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,mycounter=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

while mycounter < 1000:
    mycounter += 1
    bots = gamedoer()

    print "Game: " + str(mycounter)

    for item in bots:
        if item[0]==0:
            a0 += 1
        if item[0]==1:
            a1 += 1
        if item[0]==2:
            a2 += 1
        if item[0]==3:
            a3 += 1
        if item[0]==4:
            a4 += 1
        if item[0]==5:
            a5 += 1
        if item[0]==6:
            a6 += 1
        if item[0]==7:
            a7 += 1
        if item[0]==8:
            a8 += 1
        if item[0]==9:
            a9 += 1
        if item[0]==10:
            a10 += 1
        if item[0]==11:
            a11 += 1
        if item[0]==12:
            a12 += 1
        if item[0]==13:
            a13 += 1
        if item[0]==14:
            a14+=1
        if item[0]==15:
            a15+=1
        if item[0]==16:
            a16+=1
        if item[0]==17:
            a17+=1
        if item[0]==18:
            a18 += 1
        if item[0]==19:
            a19+=1
        if item[0]==20:
            a20+=1
        if item[0]==21:
            a21+=1
        if item[0]==22:
            a22+=1
        if item[0]==23:
            a23+=1
        if item[0]==24:
            a24+=1
        if item[0]==25:
            a25+=1
        if item[0]==26:
            a26+=1
        if item[0]==27:
            a27+=1
        if item[0]==28:
            a28+=1
        if item[0]==29:
            a29+=1
        if item[0]==30:
            a30+=1
        if item[0]==31:
            a31+=1
        if item[0]==32:
            a32+=1
        if item[0]==33:
            a33+=1
        if item[0]==34:

এই প্রতিযোগিতাটি এখন শেষ হয়েছে

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

শেষ স্কোর !!!!!

Tit for Tat: 18
Random Pick: 28
Cooperator: 19
Defector: 24
Lucky Tit for Tat: 23
Random Tit for Tat: 23
Remorseful Aggressor: 22
Every Other C: 23
Nice Guy: 18
Tit for Tat Backstab: 15
Gentle Defector: 22
Anticapitalist: 27
Grim Trigger: 19
Bizzaro: 21
NeoAnticapitalist: 24
Ten Tits for a Tat: 240
Bitter Tat: 12
Copy First: 30
Exploitative Tat: 19
Six Tits for a Tat: 16
Thirty Tits for Tat: 4129
Five Tits for a Tat: 22
Forty Tits for a Tat: 1972
Three Tits for a Tat: 22
Fifty Four Tits for a Tat: 25805
The Elephant: 31
Extra Bitter Tat: 28
Fox: 35
Game of Thrones: 11297
The Boy: 31
Grimace: 26
Sore Loser: 39
Every Other D: 18
Twenty Five Tits for a Tat: 2399
Fifty Three Tits for a Tat: 5487
Handshake: 28
Anty: 26
Kinda Tits for Tat: 20
Prudent Defector: 154539
Bizzarro Trigger: 25
Young Mathematician: 21
Older Mathematician: 16
Perfect Gentleman: 1953341

সুতরাং, দেখা যাচ্ছে যে পারফেক্ট জেন্টলম্যান বিজয়ী। Draco18 এর জন্য অভিনন্দন, যিনি অবশ্যই তাঁর সবুজ চেকমার্কের দাবিদার।


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
ডেনিস

1
দ্রষ্টব্য: আপনি যদি নিজের প্রোগ্রামটি সম্পাদনা করছেন, দয়া করে আমাকে একটি মন্তব্য দিন দয়া করে আমি বিজ্ঞপ্তি দিচ্ছি, বা অন্য কোনও কারণে স্কোরবোর্ডে রাখা যাবে না !!!!!!!!!!!!!!!!!! !!!
গ্রিফন

বাবা! আমি ঠিক বুঝতে পারি যে এটি কতগুলি আমদানি।
গ্রিফোন

1
আরে গ্রিফন, আপনি সেই চূড়ান্ত র‌্যাঙ্কিংয়ে কাজ করছেন? ;)
ড্রাকো

দুঃখিত, আমি এই সম্পর্কে ভুলে গেছি। এটি চালানোর জন্য আমাকে কিছুটা দিন।
গ্রিফন

উত্তর:


8

পারফেক্ট ভদ্রলোক

আমার এই বটটির জন্য ভাল বর্ণনা নেই। আমি বেশ কয়েকটি সম্ভাব্য অপ্টিমাইজেশনে হোঁচট খেয়েছি, সেগুলি পরীক্ষা করেছি, সূক্ষ্ম সুর করেছি এবং প্রতিযোগিতাটিকে পুরোপুরি ধ্বংসকারী ব্যাকটেরিয়া দিয়ে শেষ করেছি । পরিবর্তে, আমি কোডটি নিজেই মন্তব্য করেছি যে এটি কী করে তা ব্যাখ্যা করতে।

import random
def perfectgentlemanfunc(num, i, d, c, en):
    if num>0 and i < 0 and d > 0 and -i%3 == 0 and d%2 == 0 and en[0] == "d":
        #probably very first iteration, probably facing a defector: feed it free points
        #    defector cannot be beaten by *any* bot unless that bot
        #    entered with a point lead. defector does some of our work for us
        if num >= 140:
            #140 threshold restricts how much we feed
            return "d"
        return "c"
    turn_to_betray = 130
    if num > turn_to_betray and en[turn_to_betray -2] == "c" and
     en[turn_to_betray -1] == "c" and en[turn_to_betray] == "d":
        #if self, then sacrifice the lower point bot to raise the points of the higher
        #(better net outcome than "c/c" cooperation)
        #    Handshake independently arrived at this same optimization
        if i == d:
            #max 50% probability of choosing different possible. May as well take it
            #    "ccd" has a 55% chance of choosing the same
            #    better outcomes for splitting early
            return "cd"[random.randint(0,1)]
        if i > d:
            return "d"
        return "c"
    #betray after betray point, or if behind by >200
    #performs 6 percentage points better than not having the condition
    if num >= turn_to_betray or i + 200 < d
        return "d"
    else:
        #be nice the first turn
        if num == 0:
            return "c";
        #finally, be tit-for-tat
        return en[-1]

বেশ কয়েকটি মান পরীক্ষা করা বিকল্পগুলির সাথে নির্বিচারে বেছে নেওয়া হয়েছিল এবং এখানকার মানগুলি এই সময়ে নিকট-অনুকূল are বিরোধী দলগুলির বর্তমান বিস্তারের বিরুদ্ধে, পারফেক্ট জেন্টলম্যান প্রায় 90% সময় (প্লাস বা বিয়োগ 3 শতাংশ পয়েন্ট) এর সম্পূর্ণ আধিপত্য অর্জন করে (ব্যাকটেরিয়া জনসংখ্যার 100%)।

আমি এখনও আমার পরীক্ষায় গণিতবিদদের সাথে যোগ করি নি, তবে এই দু'জনকে কেবল বিদ্যমান কৌশলগুলি খাওয়ানোর জন্য পরিবেশন করা উচিত এবং ফলাফলটি ব্যাপকভাবে পরিবর্তন করা উচিত নয়।

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

আনুমানিক 5% সম্ভাবনা রয়েছে যে সমস্ত পারফেক্ট ভদ্রলোক প্রথম দফায় ডিফেক্টর-টাইপের সাথে জুটিবদ্ধ হন এবং গণহত্যা চালিয়ে যান end যে ক্ষেত্রে, এন-টি 4 টি ধরণের একটি মোট আধিপত্য অর্জন করে (196 এর 196 কোষ)। খুব কমই অন্য ধরণের একটি (গেম অফ থ্রোনস, বয়, গ্রিমেস, সোর হারা ...) সম্পূর্ণ বিলুপ্ত না হয়ে এবং একটি বা দুটি পয়েন্ট স্কোর করতে পারে না।

বর্তমান সিমুলেশন (এখনও 200 মোট গেমের দিকে চলছে)) 0 স্কোর করা সমস্ত এন্ট্রি সরানো হয়েছে। গিগ অফ থ্রোনস এবং 54-T4T পিজিকে বাদ দেওয়ার পরে একটি রাউন্ড (তাদের মধ্যে 195 পয়েন্ট) বিভক্ত করার মতো মনে হচ্ছে।

Game: 90

Cooperator: 1
Remorseful Aggressor: 1
Copy First: 1
Six Tits for a Tat: 1
Thirty Tits for Tat: 393
Five Tits for a Tat: 1
Fifty Four Tits for a Tat: 538
Game of Thrones: 248
Perfect Gentleman: 16456 (93.2)%

##Simulation Terminated: Adding new bots

টাটের পিছনে পিছনে ছিটিয়ে থাকা (ক্ষমা সহ)

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

from random import randint
def titfortatbackstabfunc(num, i, d, c, enlist):
    if num == 199:
        return "d";
    lucky = randint(0, 200)
    if lucky == 0:
        return "c"
    if num == 0 or enlist[-1] == "c":
        return "c"
    else:
        return "d"

বিটার টাট

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

অন্যথায়, এটি নিয়মিত প্রভাবশালী কৌশল অনুসারে টাইট টু টাস্ট। এছাড়াও, এটি তার চাচাতো ভাইয়ের চেয়ে সামান্য কিছুটা ঝাঁকুনি এবং একটি গোল আগে আগে ব্যাকস্ট্যাব করে এবং ক্ষমা দেয় না।

def bittertatfunc(num, i, d, c, enlist):
    if i < d:
        return "d";
    if num >= 198:
        return "d";
    if num == 0 or enlist[-1] == "c":
        return "c"
    else:
        return "d"

তিতের জন্য টিটের বিরুদ্ধে অন্যান্য বটের আচরণগুলি এবং সেই ফলাফলগুলিতে প্রকাশিত নিদর্শনগুলি দেখে বিটার টাট ডিজাইন করা হয়েছিল, তবে সে কৌশলগুলি স্পষ্টভাবে প্রতিরোধ করার জন্য ডিজাইন করা হয়নি: এটি এখনও একটি সাধারণ উদ্দেশ্য সূত্র।

অতিরিক্ত তিতা তাত

def xbittertatfunc(num, i, d, c, enlist):
    if i < d:
        return "d";
    if num >= 188:
        return "d";
    if num == 0 or enlist[-1] == "c":
        return "c"
    else:
        return "d"

অতিরিক্ত তাড়াতাড়ি অতিরিক্ত ত্রুটিযুক্ত।


1
এটি ইতিমধ্যে নেওয়া হয়ে থাকে তাই দয়া করে আপনার ফাংশনের নাম পরিবর্তন করুন।
গ্রিফোন

@ গ্রিফন হুপস, দুঃখিত, আমি বুঝতে পারিনি যে আমি এটি করে ফেলেছি। আমি পাইথনে আসলে কোড করি না, আমি দুটি কোডের বিট একসাথে ছড়িয়ে দিয়েছি।
ড্রাকো 18 গুলি আর

1
I suspect it will outperform NeoAnticapitalist by a small margin। আরও বেশি 30,000 পয়েন্ট দ্বারা পছন্দ।
গ্রিফোন


2
আমি প্রশংসা করি যে আপনি এই কথকে আর রসিকতা না করার জন্য একটি বট তৈরি করেছেন
ধ্বংসাত্মক লেবু

8

Anticapitalist

অন্য একটি সহজ। এমনকি ম্যাচগুলির জন্য (একই স্কোর থেকে শুরু করে) বেশ কিছুটা টিটফোর্ড্যাটের মতো আচরণ করে তবে মূল ধারণাটি ম্যাচটি টিকিয়ে রাখার চেষ্টা করছে।

def anticapitalistfunc(counter, mypoints, enpoints, mylist, enlist):
    if mypoints >= enpoints:
        return "c"
    else:
        return "d"

কোমল ডিফেক্টর

আমার ধারণাটি এখানে ত্রুটিযুক্ত হওয়া ছাড়া আমার শত্রুরা সাধারণত সহযোগিতা করে। যদিও, এটি সহযোগিতা শুরু করে।

def gentleDefectorfunc(counter, mypoints, enpoints, mylist, enlist):
    if enlist.count("d") * 4 > len(enlist):
        return "d"
    else:
        return "c"

NeoAnticapitalist

অ্যান্টিকাপিটালিস্টের একটি উন্নতি (বা আমি মনে করি)। আমি শেষ মুহুর্তে সহযোগিতার কোনও কারণ দেখতে পাচ্ছি না। আমি যখন নিশ্চিত যে আমার প্রতিদ্বন্দ্বী এটি করবে না তখন আমি সহযোগিতা করার কোনও কারণও দেখতে পাই না।

def neoanticapitalistfunc(counter, mypoints, enpoints, mylist, enlist):
    if mypoints >= enpoints:
        if counter > 1:
            if counter == 199 or (enlist[-1] != "c" and enlist[-2] != "c"):
                return "d"
        return "c"
    else:
        return "d"

আমি আসলেই অবাক হয়েছি আমি এটি ভাবিনি, তবে এটি উজ্জ্বল। আমি জানি না এটি জিতবে কিনা, তবে আমি মনে করি এটি খুব ভালভাবে কাজ করা উচিত।
গ্রিফোন

@ গ্রিফন একটি নতুন বট যুক্ত করেছে (এবং আমার আরও দুটি সংযুক্ত করে)
মাসক্লিনস

@ গ্রিফন উভয় সংস্করণের জন্য ধন্যবাদ
মাসক্লিনস

কোনও সমস্যা নেই, @ অ্যালবার্টম্যাসক্লানস
গ্রিফন

আমি যে অনুকরণগুলি চালিয়ে যাচ্ছি তার মধ্যে থেকে, নিওএন্টিকাপিটালিস্ট টাট-এর জন্য ব্যাকস্ট্যাবিং টাইটের নেতৃত্ব নিয়েছে বলে মনে হয়।
গ্রিফন

6

অনুশোচনা আগ্রাসী

from random import randint
def remorsefulaggressorfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter == 0:
        return "d"
    if (counter > 195 and mylist[-1] == "d"):
        return "d"
    if ((counter == 1 or counter > 2) and enlist[-1] == "d"):
        return "d"
    if (counter == 2 and enlist[-1] == "d" and enlist[-2] == "d"):
        return "d"
    if (counter >= 195 and randint(0, 200 - counter) == 0):
        return "d"
    else:
        return "c"

এটি প্রতিরক্ষার সাথে প্রতিপক্ষকে ত্রুটিযুক্ত করে "চালিয়ে যেতে", এবং ট্যাট-ফর-ট্যাট-ভিত্তিক কৌশলগুলিও পরাস্ত করার জন্য ডিজাইন করা হয়েছে।

মূল ধারণাটি হ'ল আমরা ত্রুটিযুক্ত করেই শুরু করি, তবে প্রতিপক্ষ যদি পালা 1-কে সহায়তা করে, তবে আমরা পরস্পর পুনরুদ্ধার চক্র এড়াতে দু'বার সহযোগিতা করি, সুতরাং খুব বেশি পয়েন্টের জরিমানা এড়ানো যায়। (তবে, পরে যদি প্রতিপক্ষের ত্রুটি থাকে তবে আমরা চক্রটি নিজেরাই ভাঙি না; আমরা তাদের তা করিয়ে দেব এবং ফলস্বরূপ খেলাটি হারাতে পারি)) তারপরে গেমের শেষে, আমরা একটি এলোমেলো সময় বেছে নিই we শেষ 5 টির মধ্যে শত্রুর পিছনে দাঁড়ানোর জন্য, তাদের থেকে আমাদের আরও একটি ত্রুটি বিচ্যুত করে দেয় এবং এর অর্থ দাঁড়ায় যে যতক্ষণ আমরা ক্যারিওভার পয়েন্টগুলিতে খুব বেশি পিছিয়ে ছিলাম না, ততক্ষণ আমরা প্রক্রিয়াটিতে ক্যারিওভারের ক্ষেত্রে অনেক ত্যাগ ছাড়াই জিতে শেষ করি end । (সময়কালকে এলোমেলো করার অর্থ হ'ল আমরা ব্যাকস্ট্যাবের সাথে প্রথম দিকে আসার খুব সম্ভাবনা রয়েছে, এটিও যে এই কৌশলটি একবারের আগেই ফিরে আসার লক্ষ্য রেখে "এর বিরুদ্ধে সুর" দেওয়া যায় না))


আপনার 3 নম্বর স্পটে অভিনন্দন! +1
গ্রিফন

6

মারাত্মক ট্রিগার

সহজ প্রতিযোগিতা, প্রতিযোগিতার চেষ্টা এবং পূরণ করার জন্য

এটি সহযোগিতা করবে, যদি না শত্রু ত্রুটিযুক্ত হয়, তবে যদি তা ক্ষমা না করে

def grimtriggerfunc(I, Do, Not, Care, enlist): return "d" if "d" in enlist else "c"

ভাল, দেখে মনে হচ্ছে এটি প্রথম দিকে ত্রুটিযুক্ত করার ntitsfortat মেটা কারণ কাজ করে না


আপনার 5 নম্বর স্থানে অভিনন্দন, +1।
গ্রিফোন

@ স্লেফার আমি ভাবছিলাম কে এইরকম মানে হবে; _; ঠিক আছে
ধ্বংসাত্মক লেবু

5

সিংহাসনের খেলা

def gameofthronesfunc(counter, mypoints, enpoints, mylist, enlist):
    turn_to_betray = 140
    if counter >= turn_to_betray or mypoints > enpoints or "d" in enlist:
        return "d"
    else:
        return "c"

এখানে ধারণাটি হ'ল আপনি বিশ্বাসঘাতকতা করে কখনই হারাতে পারবেন না, তাই আপনার পিছনে থাকলে সহযোগিতার একমাত্র কারণ। এটিতে অন্যান্য টি 4 টি উত্তরের সাধারণ কাঠামো রয়েছে (কোনও ক্ষমা ছাড়াই, কারণ আমি নিশ্চিত নই যে এখানে অন্যান্য প্রতিযোগীদের সাথে খুব একটা পয়েন্ট আছে)।

বিশ্বাসঘাতকতার পালাটি জয়ের জন্য পরিবর্তনের প্রয়োজন হতে পারে, যেহেতু একটি এমনকি দৌড়ে টি-টায়ার যিনি প্রথমে বিশ্বাসঘাতকতা করেন তারা জিততে পারে, তবে একটি খুব সহযোগিতামূলক বটের বিপরীতে আপনি কিছু জীবনকাল পয়েন্ট মিস করবেন। আমি এই পাহাড়ের সঠিক শীর্ষস্থানীয় সম্পর্কে নিশ্চিত নই, সুতরাং আমি কেবল ১৪০ এর জন্য যাচ্ছি it যদিও এটি আগে খুব বেশি হত তবে আমি অবাক হব না।

যদি এটি কোনও পেট্রি ডিশে শেষ হয় যে কোনও টি 4 টিয়ারের সাথে বিশ্বাসঘাতকতা করে বা কোনও ত্রুটিযুক্ত (অর্থাত্ 146 টি 4 টি), তবে এটি সম্পূর্ণরূপে নির্ভর করে যে জিওটি ইতিমধ্যে এগিয়ে রয়েছে কিনা (এটি এগিয়ে থাকবে) অথবা তারা এমনকি / গোয়েন্দা পিছনে থাকলে , এক্ষেত্রে প্রারম্ভিক বিশ্বাসঘাতক জিতবে।


আপনার তৃতীয় স্থান সমাপ্তির জন্য অভিনন্দন! +1
গ্রিফন

এবং এখন দ্বিতীয় পর্যন্ত!
গ্রিফোন

গেম অফ থ্রোনস বর্তমানে যে বটটি পরীক্ষা করছি তার বিরুদ্ধে লড়াই চালিয়ে যাচ্ছে। সহজ কৌশল এটির জন্য ভালভাবে কাজ করছে।
ড্রাকো

4

ভাগ্যবান তিতের জন্য

import os
def luckytitfortatfunc(num, i, d, c, enlist):
    lucky = ord(os.urandom(1))
    lucky = int(round(200 * float(lucky - 0) / 255.0))
    if lucky == 0:
        return "c"
    if num == 0 or enlist[-1] == "c":
        return "c"
    else:
        return "d"

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


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

1
@ ড্রাকো 18 গুলি এটি একটি ভিন্ন স্কোরিং সিস্টেমের মোট বিজয়ী কৌশল, মোট পয়েন্ট স্কোরিং সিস্টেম। বেস টাইট-ফর-ট্যাট কখনই কোনও রাউন্ড জিততে পারে না, যদি এটি রাউন্ডে কিছু পয়েন্ট না নিয়ে থাকে তবে এটি ভাল করতে পারে না।
isaacg

@ আইস্যাক ঠিক বলেছেন, এই কারণেই এই কৌশলটি এখন 18 এর মধ্যে 14 তম অবস্থানে রয়েছে (যদিও 18 তম প্রোগ্রামটি আমার একটি হিসাবে এটির জন্য আমার এএইচ এলকে দোষ দেওয়ার কোনও অধিকার নেই।)
গ্রিফন

4

হাতি

হাতি কখনই ভুলে যায় না!

import re
def theelephantfunc(counter, mypoints, enpoints, mylist, enlist):
    interwoven = "".join(i for j in zip(mylist, enlist) for i in j)
    backwoven = interwoven[::-1]
    predict = re.match("^((?:..)*).*?(.).\\1(?:..)*$",backwoven)
    if(predict is None):
        return "c"
    predict = predict.groups()[1]
    if(predict == "d"):
        return "d"
    if(mypoints - enpoints >= 6):
        return "c"
    return "d"

হাতির লড়াইয়ের ইতিহাসের দিকে নজর দেয় এবং শত্রু কী পরিকল্পনা করেছে তা নির্ধারণের চেষ্টা করে। তিনি তার চাল এবং শত্রু উভয় তাকান!

তিনি সর্বাধিক দীর্ঘস্থায়ী গোষ্ঠীটি সন্ধান করার চেষ্টা করেছেন যা সবেমাত্র যা ঘটেছিল তার সাথে মেলে এবং শত্রুরা তার পরে যা করেছিল তা গ্রহণ করে।

যদি তিনি এটি কার্যকর করতে না পারেন, তবে এলিফ্যান্ট কেবল সহযোগিতা করবে, কারণ বন্ধুত্ব সবসময়ই এর উত্তর।

যদি তিনি মনে করেন যে তার প্রতিপক্ষটি ত্রুটিযুক্ত হবে, তবে তিনিও ত্রুটিযুক্ত হবেন, তার হার্ড অর্জিত পয়েন্ট হারাতে চান না।

যদি তিনি মনে করেন তার প্রতিপক্ষ সহযোগিতা করবে, তবে তার চেয়ে কম বা ঠিক points পয়েন্টের নেতৃত্ব, তবে তিনি কিছুটা পদক্ষেপ নেওয়ার জন্য ত্রুটিযুক্ত হবেন।

এবং সবশেষে, যদি তিনি মনে করেন তার প্রতিপক্ষ সহযোগিতা করবে, এবং তার দৃ strong় নেতৃত্ব রয়েছে, তবে তিনি সহযোগিতা করবেন।


আমি অপেক্ষা করছিলাম এমন ভালো কিছু যা ভাল গায়ের চেয়ে ভাল কাজ করেছে better যাইহোক, আমি এটি প্রায় 8 ঘন্টা পরীক্ষা করতে সক্ষম হবো না, তাই আমার প্রায় 12-13-এ আপডেট হওয়া উচিত।
গ্রিফন

4

৫ টাট ট্যাটের জন্য

ডিফ ফিফটিফোরিটস্ফোর্টফুনক (নাম, আরও, মজা, আমি, এন):
    মাতাল = 54
    যদি এন-তে "d" থাকে [-উদ্দীপক:] বা সংখ্যা> = (200-স্তরের):
        "ডি" ফিরে
    "গ" ফিরে

আমি ভাবছি এটা কি এখনও জিতবে?
গ্রিফোন

এই মুহূর্তে জিতেছে বলে মনে হচ্ছে!
গ্রিফোন

অভিনন্দন, আপনি সংক্ষিপ্তভাবে আমার শীর্ষ দুটি বটকে পরাজিত করলেন!
গ্রিফন

@ গ্রিফন যদি আমি আমার অন্যান্য বটগুলির সাথে এতটা সংযুক্ত না থাকি তবে আমি টাটের জন্য পাঁচটি স্তন তৈরি করতাম :)
অ্যালেক্স

আমি মনে করি এটি বক্ররেখার অন্যদিকে চলে যাবে। যদিও আমি নিজেই পরীক্ষা করতে পারি!
গ্রিফন

3

চমৎকার ব্যক্তি

def niceguyfunc(counter, mypoints, enpoints, mylist, enlist):
  if counter < 2:
    return "c"

  mylast = mylist[-1]
  enlast = enlist[-1]
  last_found_index = -1

  for i, item in enumerate(mylist):
    if i == counter - 1:
      break
    if mylist[i] == mylast and enlist[i] == enlast:
      last_found_index = i

  if last_found_index == -1:
    return "c"
  else:
    if enlist[last_found_index + 1] == "c":
      return "c"
    else:
      return "d"

ইতিহাস দেখে বিরোধীদের আউটপুট পূর্বাভাস দেওয়ার চেষ্টা করে। উদাহরণস্বরূপ, যদি শেষ পদক্ষেপগুলি ( c, শত্রু d) হয় তবে এটি সঠিক একই চলনের শেষ ঘটনাটি অনুসন্ধান করার চেষ্টা করে।


3

হ্যাকম্যান [প্রত্যাশার মতো অযোগ্য]

ঠিক আছে, সম্ভবত এই প্রতিযোগিতাটি বাদ দেওয়া হবে তবে আমি সত্যিই এটি চেষ্টা করে দেখে মনে করি:

def hackmanfunc(counter, mypoints, enpoints, mylist, enlist):
        if enlist.count("#") > 0:
                return "c"
        elif counter >= 2 and enpoints > mypoints:
                return "d"
        elif counter == 198:
                return "d"
        elif counter == 199:
                return "#"
        elif counter == 0 or enlist[-1] == "c":
                return "c"
        elif counter >= 2 and enlist[-2] != "c":
                return "#"
        else:
                return "d"

এখানে আমি ব্যাকস্ট্যাবিটিংটিটফোর্ড্যাটকে বেস হিসাবে নিচ্ছি যা আমার সিমুলেশনগুলির মধ্যে সেরা প্রমাণিত। এছাড়াও এটি প্রচুর পরিমাণে একটি অ-ব্যবহৃত প্রতীক ব্যবহারের উপর ভিত্তি করে"#" (এজন্য আমি বলছি এটি সম্ভবত প্রত্যাখ্যাত হবে)।

এখন আমাকে শর্তগুলি এখানে ব্যাখ্যা করুন:

1 ম: কিছু ভুল হলে দুটি হ্যাকম্যান সহযোগিতা নিশ্চিত করুন।

২ য়: যদি আমি কোনও ভিন্ন বটের বিরুদ্ধে হারাতে চাই তবে কমপক্ষে তাকে যতটা সম্ভব পয়েন্ট হারাতে দাও, এটি পরে কোনও বিশাল শত্রু নয়।

তৃতীয়: এক বার আগে বিশ্বাসঘাতকতা করুন, সুতরাং বনাম ব্যাকস্টাবিং জিতেছে

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


2
দুঃখিত, কিন্তু অযোগ্য এটি বিচার প্রক্রিয়াটির সাথে গোলমাল হিসাবে গণ্য হয়। আপনি প্রতিটি পালা "গ" বা "ডি" করতে হবে।
গ্রিফন

2
তবে এটি বেশ উদ্ভাবক, তাই এটিকে অযোগ্য ঘোষণা করতে পেরে আমি দুঃখিত।
গ্রিফন

3

Bizzaro

তাত্ত্বিকের জন্য শিরোনামের ঠিক বিপরীত কাজ করে। কেউ যখন তার প্রতি সদয় হয় তখন সে মন্দ হয়ে নিজের ভালবাসা প্রদর্শন করে এবং যখন কেউ বোঝায় সে ভাল হয়ে প্রতিশোধ প্রদর্শন করে। ভারীভাবে টাটের জন্য শিরোনামের উপর ভিত্তি করে।

def bizzarofunc(counter, mypoints, enpoints, mylist, enlist):
    if counter==0 or enlist[counter-1] == "c":
        return "d"
    else:
        return "c"

মজাদার. যদিও এটি ডিফেক্টর দ্বারা নিহত হতে চলেছে।
গ্রিফোন

@ গ্রিফন লামাও আসলে তা বুঝতে পারেন নি। তবে ওহে, বিজারো কোনটিই সঠিক এবং ভুলের মধ্যে পার্থক্য জানে না, জিতবে এবং হারবে।
টাইটাসলুক্রেতিয়াস

হ্যাঁ, এটি ডিফল্টর প্রতি সহযোগী এবং সহযোগীর প্রতি ত্রুটিযুক্ত হবে, যা কিছু আকর্ষণীয় সম্ভাবনা তৈরি করতে পারে। এটি নিজেই সহ অন্য যে কোনও কিছুর সাথে সত্যই সহাবস্থান করতে পারে না।
গ্রিফোন

@ গ্রিফন, হ্যাঁ এটি 0 পেতে হবে যখন এটি নিজে খেলে। ভদ্র আশ্চর্যের সাথে কী ঘটবে তা ভাবুন।
তিতাসলুক্রেটিয়াস 24:25 '

ভাবুন কী ঘটে যখন তা টাইটের পিছনে থাকা টাইটারের মুখোমুখি হয়, যা এই জমা দেওয়ার আগে জিতেছিল।
গ্রিফোন

3

একটি টাট জন্য 6 টি টি

ডিএফ সিক্সটিসফোর্যাট্যাটফুনক (নাম, আরও, মজা, আমি, এন):
    যদি এন এর মধ্যে "d" থাকে [-6:] বা নাম> = 194:
        "ডি" ফিরে
    "গ" ফিরে

টাট অস্ত্রের লড়াইয়ের তৃতীয় ঘটনা ঘটছে :)


আমি মনে করি আমরা ওভারবোর্ডে যাব এবং ডিফেক্টর শীর্ষস্থানটি চুরি করবে।
গ্রিফন

3

এক টোটার জন্য দশটি হাত

def tentitsforatatfunc(num, more, fun, me, en):
    if "d" in en[-10:] or num >= 190:
        return "d"
    return "c"

আগের ত্রুটিগুলি, এবং তার প্রতিপক্ষের দশ দশটি পালটে ত্রুটিযুক্ত থাকলেও ত্রুটিগুলি।

CopyFirst

def copyfirstfunc(num, mypoints, enpoints, myhistory, enhistory):        
    if num == 0 or num >= 197:
        return "d"
    else:
        return enhistory[0]

এটি প্রথম রাউন্ডকে ত্রুটিযুক্ত করে, তারপরে প্রতিপক্ষ যেটি প্রথম রাউন্ডটি করেছিল, 197 th ষ্ঠ রাউন্ড পর্যন্ত, যখন এটি ব্যাকস্টাব করে।

এক টোটালের জন্য চল্লিশ টিউটস

def fourtytitsforatatfunc(num, mypoints, enpoints, myhistory, enhistory):
    if "d" in en[-40:] or num >= 150:
        return "d"
    return "c"

যদি প্রতিপক্ষ 40 টি পালটে ত্রুটিযুক্ত হয় তবে ত্রুটিযুক্ত, অন্যথায় সহযোগিতা করুন। শেষ 50 টার্নে ব্যাকস্ট্যাব।

একটি টাটের জন্য তিনটি মাপ

যদি প্রতিপক্ষটি শেষ 3 টি তে ত্রুটিযুক্ত হয় তবে ত্রুটিযুক্ত, অন্যথায় সহযোগিতা করুন। শেষ 5 টার্নে ব্যাকস্ট্যাব। এই প্রোগ্রামটি টাইট ফর টু টুসের সংক্ষিপ্ত ব্যবধানে শীর্ষস্থানটি কেড়ে নিয়েছে।

def threetitsforatatfunc(num, mypoints, enpoints, myhistory, enhistory):
    if num == 0 or num==1 and enhistory[-1]=="c" or num==2 and enhistory[-1]=="c" and enhistory[-2]=="c":
        return "c"
    if enhistory[-1] == "d" or enhistory[-2] == "d" or enhistory[-3] == "d" or num >= 195:
        return "d"
    else:
        return "c"

একটি ট্যাট জন্য পাঁচ টি

def fivetitsforatatfunc(num, more, fun, me, en):
    if "d" in en[-5:] or num >= 194:
        return "d"
    return "c"

এটি কী করে তা যদি বুঝতে না পারেন তবে আপনি একজন নির্বোধ। এর আগেও এক রাউন্ড ব্যাকস্ট্যাব করে।


আইএমও, আপনার নিজের এন্ট্রি জমা নির্দ্বিধায়।
ড্রাকো

এটি সাধারণভাবে ন্যায্য বলে বিবেচিত হবে কিনা তা নিশ্চিত ছিল না।
গ্রিফন

তবে সাধারণত যেটি সাধারণ হয় তা হ'ল সেরা উত্তরটি হ'ল বিজয়ী বট।
মাসক্লিনস

এটি হবে, আমি কেবল নিজের উত্তরটি বেছে নেব না। এটা অবশ্যই ন্যায্য হবে না।
গ্রিফোন

আমি ক্ষমাপ্রার্থী, আমি বুঝতে পারি নি দুর্ঘটনাক্রমে আমার উত্তরটি গ্রহণ করেছি। এটি এখন অগ্রহণযোগ্য, এবং আমি জুলাই 1 হিসাবে সেরা উত্তর গ্রহণ করব
গ্রিফন

3

ভেংচি

def grimacefunc(I, Do, Not, Care, enlist):
    if round < 123: return "d" if "d" in enlist else "c"
    return "d"

এই পাহাড়টির জন্য "সর্বোত্তম" সমাধানটি এর মতো কিছু করার মতো মনে হয় (এন> 5 সহ টি 4 এনটি মূলত এটি) এবং এটি যখন বিশ্বাসঘাতকতা করে তখন কেবল গোলটি অনুকূল করে নিন। আরও সৃজনশীল যে কোনও কিছুই ধ্বংস হয়ে যাবে।
রবার্ট ফ্রেজার

3

অন্যান্য অন্যান্য ডি

def everyotherdfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter % 2 == 0:
        return "d"
    else:
        return "c"

অন্যান্য অন্যান্য সি

def everyotherdfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter % 2 == 0:
        return "c"
    else:
        return "d"

সহযোগিতার সাথে শুরু করে আপনার অন্য একটি এন্ট্রি জমা দেওয়া উচিত।
গ্রিফন

শুধু ভেবেছি এটি আকর্ষণীয় হতে পারে।
গ্রিফন

3

অনুমানযোগ্য গণিতবিদ:

তরুণ গণিতবিদ

বিশ্বের কঠোরতা নতুন

import math
def ymathfunc(num, mpoints, enpoints, mlist, enlist):
  if(math.sin(num) + 0.8 > 0):
    return 'c'
  else:
    return 'd'

বয়স্ক গণিতবিদ

এই বিষয়ে আরও অভিজ্ঞ

import math
def omathfunc(num, mpoints, enpoints, mlist, enlist):
  if(math.cos(num) + 0.8 > 0):
    return 'd'
  else:
    return 'c'

আমি সন্দেহ করি যে এগুলির দুটিই ভাল করবে তবে কমপক্ষে তারা অন্যদের জন্য পয়েন্ট পাওয়ার উপায় যুক্ত করবে!


এগুলির কোনওটিই ভাল করতে যাচ্ছে না, হে। তারা যা করে তা হ'ল বেশিরভাগ অংশের জন্য খেলাপিদের খাওয়ানো।
ড্রাকো

2

টাটের জন্য র্যান্ডমাইজড টাইট

import os
def randomtitfortatfunc(forgot, ten, var, iables, enlist):
    luck = enlist.count("d") + 1
    choice = ord(os.urandom(1))
    choice = int(round(luck * float(choice - 0) / 255.0))
    if choice == 0:
        return "c"
    return "d"

টাটের জন্য তৃতীয়, তবে এলোমেলোভাবে। এটি কোনও পুরস্কার জিততে পারে না (যদি না আমি সত্যিই ভাগ্যবান)। এখন সঠিক উত্স থেকে উত্পন্ন এলোমেলো সংখ্যা সহ with


2

শোষণীয় তাত

শোষণীয় তাত নিম্নলিখিত কৌশলগুলি খেলতে চেষ্টা করে:

  • পিছনে যখন ত্রুটি। এটি ধরার একমাত্র উপায়।

  • টাইট-ফর-ট্যাট এবং অনুরূপ কৌশলগুলির বিরুদ্ধে সহযোগিতা করুন। দীর্ঘমেয়াদী ভাল স্কোর পাওয়ার একমাত্র উপায় এটি।

  • সর্বদা-সহযোগী এবং অন্যান্য চাম্পের বিরুদ্ধে ত্রুটি।

  • 5 রাউন্ড তাড়াতাড়ি ত্রুটিযুক্ত।

কোডটি এখানে:

def exploitativetatfunc(num, mypoints, enpoints, mylist, enlist):
    if mypoints < enpoints:
        return "d"
    if num >= 195:
        return "d"
    if num == 0:
        return "c"
    # Test defect, and keep defecting as long as they'll allow
    if (num == 5 or num >= 8) and all(choice == "c" for choice in enlist):
        return "d"
    # Recover if that goes wrong, and they were nice.
    if (num == 6 or num == 7) and all(choice == "c" for choice in enlist[:4]):
        return "c"
    # Otherwise, tit for tat.
    return enlist[-1]

আমি আশ্চর্য হয়েছি যে এটি 8 তমবারের জন্য টাইয়ের চেয়ে ভাল কিছু করতে পারেনি, তবে আমি মনে করি এটি কেবল এটির জন্য ভুল সময় ছিল এবং দুর্ভাগ্যক্রমে এটি টু টাইট ফর ট্যাট হিসাবে একই সময়ে প্রবেশ করেছিল।
গ্রিফন

2

30 টাট ট্যাট

ডিএফ ত্রিশটিসফর্টফ্যাঙ্ক (নাম, আরও, মজা, আমি, এন):
    মাতাল = 30
    যদি এন-তে "d" থাকে [-উদ্দীপক:] বা সংখ্যা> = (200-স্তরের):
        "ডি" ফিরে
    "গ" ফিরে

2

তবে কী যদি ... পরবর্তী উত্তরটি মারাত্মক ট্রিগার বা তাত্পর্য জন্য কিছু ছিল না

আমি উপশ্তিথ

Anty

def antyfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter > 150: return "d"
    if not "c" in enlist[-2:]:
        return "d"
    if enpoints >= mypoints:
        return "d"
    else:
        return "c"

ইন্টারস্টিয়ারিং, আমি বাড়ি এলে পরীক্ষা করবে।
গ্রিফোন

2

শিয়াল

def foxfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter > enpoints:
        return "d"
    return "c"

গোলাকার সংখ্যা শত্রু পয়েন্টগুলির চেয়ে বেশি হলে ত্রুটিগুলি, অন্যথায় সহযোগিতা করে।

ছেলেটি

def boyfunc(counter, mypoints, enpoints, mylist, enlist):
    if counter!=0 and enlist[-1]=="c" and counter <= 194 or enpoints+10<mypoints:
        return "c"
    return "d"

প্রথম দফায় সহযোগিতা করে, তারপর শেষ পাঁচটি রাউন্ডে ট্যাট কিন্তু ব্যাকস্ট্যাবগুলির জন্য শিরোনামের জন্য কাজ করে এবং যদি দশ পয়েন্ট এগিয়ে না থাকে তবে ত্রুটিগুলি।

এক ট্যাট জন্য 53 টি মাই

def fiftythreetitsfortatfunc(num, more, fun, me, en):
    tits = 53
    if "d" in en[-tits:] or num >= (200-tits):
        return "d"
    return "c"

আপনারা সবাই জানেন এটি কি :)


2

Twentyfivetitsforatat

def twentyfivetitsfortatfunc(num, more, fun, me, en):
    tits = 25
    if "d" in en[-tits:] or num >= (200-tits):
        return "d"
    return "c"

কিন্ডা ফসফোর্যাট

def kindatitsfortatfunc(num, more, fun, me, en):
    tits = 54  
    if "c" in en[-tits:] or num >= (200-tits):
        return "c"
    return "d"

পরের বার আপনি কোনও প্রোগ্রাম যুক্ত করতে সম্পাদনা করুন, দয়া করে একটি মন্তব্যও যুক্ত করুন যাতে আমি সতর্ক হয়ে যাই। ধন্যবাদ!
গ্রিফন

@ গ্রিফন ওহ দুঃখিত
ক্রিস্টোফার

2

বিচক্ষণ বিশ্বাসঘাতক

def PrudentBetrayer(counter, mypoints, enpoints, mylist, enlist):
    # Am I ahead, even if he betrays first?
    if mypoints > enpoints + 5:
        if counter == 0:
            return "c"
        else:
            return enlist[-1]
    # Can I catch up if I betray first?
    elif mypoints + 5 > enpoints:
        if counter == 0:
            return "c"
        elif counter > 130:
            return "d"
        else:
            return "d" if "d" in enlist else "c"
    # can't win -> kill his score
    else:
        return "d"

ধরে নিন এটি একটি n-tits-for-a-tatবট লড়াই করছে। যদি বিশ্বাসঘাতকতা করার জন্য এটির স্কোর থাকে এবং এখনও জিতে যায় তবে এটি অন্য বটটিকে প্রথমে আঘাত করতে দেবে (ট্যাট হিসাবে টাইট হিসাবে খেলছে)) এটি যদি প্রথম বিশ্বাসঘাতকতা করতে পারে তবেই এটি জিততে পারে, এটি কোনও বর্তমানের আগেই 130 এর গোলের সাথে বিশ্বাসঘাতকতা করবে well বট। যদি এটির প্রতিপক্ষের অনেকগুলি পয়েন্ট পিছনে থাকে তবে এটি কেবলমাত্র সন্দেহজনক বট স্কোরকে হ্রাস করার প্রয়াসে খেলোয়াড় খেলবে।


হ্যান্ডশেক

import random
def handshakefunc(num, me, him, m, en):
    handshake = "cdccd"
    # For the first few rounds, give the handshake.
    if num < len(handshake):
        if m == en:
            return handshake[num]
        return "d"
    if en[:len(handshake)] == handshake:
        if me > him:
            return "d"
        if me == him:
            return "ccd"[random.randint(0,2)]
        return "c"
    return "d"

cdccdপ্রথমটি পাঁচটি রাউন্ডে প্যাটার্নটি ব্যবহার করে , এটি নিজের সাথে রয়েছে কিনা তা খুঁজে বের করতে। যদি তা হয় তবে এটি বটকে সর্বদা ত্রুটিযুক্ত করে তার পয়েন্টগুলি সর্বাধিক করার চেষ্টা করবে, অন্যদিকে সর্বদা সহযোগিতা করবে। যদি এটি আবিষ্কার করে যে এটি শত্রুর সাথে লড়াই করছে তবে এটি ডিফেক্টর খেলবে।

আমার পরীক্ষাগুলিতে, আমি এটির পরিমাণ ঠিকভাবে খুঁজে পাই যদি এটি জনসংখ্যার উল্লেখযোগ্য অংশ করে। যখন এটি ডোজ নিজে লড়াই করার সুযোগ না পায়, তবে এটি মূলত একটি ডিফেক্টর হিসাবে কমে যায়।

সম্পাদনা: স্কোর থেকে স্পষ্টতই, এটি ভাল কাজ করার জন্য অনেকগুলি বটগুলিতে to শীর্ষস্থানীয় কয়েকজনের সাথে লড়াই করলে তা এখনও জিতবে ...


বিজারো ট্রিগার

def bizzaroTriggerfunc(round,ms,ts,mm,tm):
  if round==1:return 'c'
  if 'c' in tm:return'd'
  return 'c'

সর্বদা সহযোগিতা করুন, যদি না আপনার প্রতিপক্ষ কখনও আপনার সাথে সহযোগিতা করে, যদি আপনি ত্রুটিযুক্ত হন। সর্বদা.


@ গ্রিফোন ঘাড়ে ক্ষতিগ্রস্থকে সরানো হয়েছে, এবং একটি নতুন বট যোগ করা হয়েছে!
মেগাটম

পরীক্ষায় আমি এখন বটে যাচ্ছি যেটি আমি পোস্ট করি নি, হ্যান্ডশেক 3900 গেমসের পরে দ্বিতীয় অবস্থানে রয়েছে (5338 টিকে থাকা বট) প্রায় 1200 দ্বারা 54-T4T ছাড়িয়ে গেছে। যদিও আমার নতুন বটটি তার চেয়ে অনেক বেশি শক্তিশালী, যদিও । প্রাথমিক পরীক্ষাগুলিতে এটি 196 এর মধ্যে 196 স্কোর করেছিল, যদিও এটি দীর্ঘকালীন an 124 / গেমের গড় স্কোর করে। আকর্ষণীয়ভাবে যথেষ্ট, হ্যান্ডশেকের পিছনে যে ভিত্তিটি আমি পরবর্তী চেষ্টা করতে যাচ্ছিলাম তা প্রমাণ করে আপনি আমাকে এটির কাছে প্রহার করলেন।
ড্রাকো

0

FakeShake

হ্যান্ডশেকের সুবিধা নেয়- একটি হ্যান্ডশেক কি হ্যান্ডশেক যখন এটির উপর নির্ভর করে তখন কেবল ত্রুটিগুলি করে। এটি যখন নিজের সাথে মিলিত হয়, তবে এটি 'আসল' হ্যান্ডশেক করে। এটি যদি কোনও ভিন্ন বটের সাথে দেখা করে তবে এটি শেষের দিকে বিশ্বাসঘাতকতার সাথে টাইটের হয়ে খেলে plays এটাই মনে হচ্ছে ...

import random
def fakeshakefunc(num, i, d, m, enlist):
      secret_handshake="cdccdd"
      handshake= "cdccd"
      #checks if it is meeting itself
      if enlist[:len(secret_handshake)] == secret_handshake:
          if me > him:
            return "d"
          if me == him:
             return "ccd"[random.randint(0,2)]
          return "c"
      #does handshake's handshake,if the bot is not handshake or fakeshake it plays T4T
      if num < len(handshake):
            if m == enlist:
                return handshake[num]
            if i < d or num>= 198:
                return "d";
            if num == 0 or enlist[-1] == "c":
                return "c"
            else:
                return "d"
            if enlist[:len(handshake)] == handshake:
                return "d"
            if i < d or num>= 198:
                return "d";
            if num == 0 or enlist[-1] == "c":
                return "c"
            else:
                return "d"

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


পিপিসিজিতে আপনাকে স্বাগতম!
লাইকনি

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