প্রথম দামের সিল-বিড নিলাম


32

সর্বশেষ ফলাফল

প্রতিযোগিতা শেষ। অভিনন্দন hard_coded!

কিছু আকর্ষণীয় তথ্য:

  • 40920 নিলামের (77 77.২%) মধ্যে ৩66০০ সালে প্রথম রাউন্ডের বিজয়ী সেই নিলামে সবচেয়ে বেশি রাউন্ড জিতেছিল।

  • উদাহরণস্বরূপ যদি প্রতিযোগিতায় বটস অন্তর্ভুক্ত করা হয়, তবে শীর্ষটি নয়টি স্থান ব্যতীত পরিবর্তিত হবে না AverageMineএবং heuristতাদের অবস্থানগুলি অদলবদল করবে।

  • নিলামে শীর্ষ 10 ফলাফল:

[2, 2, 3, 3] 16637
[0, 3, 3, 4] 7186
[1, 3, 3, 3] 6217
[1, 2, 3, 4] 4561
[0, 1, 4, 5] 1148
[0, 2, 4, 4] 1111
[2, 2, 2, 4] 765
[0, 2, 3, 5] 593
[1, 1, 4, 4] 471
[0, 0, 5, 5] 462
  • টাই গণনা (যে আমি-তম বৃত্তাকার নিলাম সংখ্যা কোন বিজয়ী ছিল): [719, 126, 25, 36, 15, 58, 10, 7, 19, 38]

  • I- তম বৃত্তাকার গড় বিজয়ী দর: [449.4, 855.6, 1100.8, 1166.8, 1290.6, 1386.3, 1500.2, 1526.5, 1639.3, 3227.1]

স্কোরবোর্ড

Bot count: 33
hard_coded            Score: 16141  Total: 20075170
eenie_meanie_more     Score: 15633  Total: 18513346
minus_one             Score: 15288  Total: 19862540
AverageMine           Score: 15287  Total: 19389331
heurist               Score: 15270  Total: 19442892
blacklist_mod         Score: 15199  Total: 19572326
Swapper               Score: 15155  Total: 19730832
Almost_All_In         Score: 15001  Total: 19731428
HighHorse             Score: 14976  Total: 19740760
bid_higher            Score: 14950  Total: 18545549
Graylist              Score: 14936  Total: 17823051
above_average         Score: 14936  Total: 19712477
below_average         Score: 14813  Total: 19819816
Wingman_1             Score: 14456  Total: 18480040
wingman_2             Score: 14047  Total: 18482699
simple_bot            Score: 13855  Total: 20935527
I_Dont_Even           Score: 13505  Total: 20062500
AntiMaxer             Score: 13260  Total: 16528523
Showoff               Score: 13208  Total: 20941233
average_joe           Score: 13066  Total: 18712157
BeatTheWinner         Score: 12991  Total: 15859037
escalating            Score: 12914  Total: 18832696
one_upper             Score: 12618  Total: 18613875
half_in               Score: 12605  Total: 19592760
distributer           Score: 12581  Total: 18680641
copycat_or_sad        Score: 11573  Total: 19026290
slow_starter          Score: 11132  Total: 20458100
meanie                Score: 10559  Total: 12185779
FiveFiveFive          Score: 7110   Total: 24144915
patient_bot           Score: 7088   Total: 22967773
forgetful_bot         Score: 2943   Total: 1471500
bob_hater             Score: 650    Total: 1300
one_dollar_bob        Score: 401    Total: 401

এই গেমটিতে, আমরা একটি সিল-বিড নিলাম অনুকরণ করব।

প্রতিটি নিলাম একটি 4 খেলোয়াড়ের খেলা, 10 রাউন্ড নিয়ে গঠিত। প্রাথমিকভাবে, খেলোয়াড়দের কোনও অর্থ নেই। প্রতিটি রাউন্ডের শুরুতে, প্রতিটি খেলোয়াড় 500 ডলার পাবে এবং তারপরে তাদের নিজস্ব বিড তৈরি করবে। বিডটি যে পরিমাণ নন-নেগেটিভ পূর্ণসংখ্যা হতে পারে তার পরিমাণের চেয়ে কম বা সমান। সাধারণত, যিনি রাউন্ডে সর্বাধিক বিজয়ী হন। তবে বিষয়গুলিকে আরও আকর্ষণীয় করে তোলার জন্য, যদি বেশ কয়েকটি খেলোয়াড় একই দামে বিড করে, তাদের বিডকে আমলে নেওয়া হবে না (এভাবে রাউন্ডটি জিততে পারে না)। উদাহরণস্বরূপ, যদি চারজন খেলোয়াড় 400 400 300 200 ডলারে बोली দেয়, একজন 300 টি জয়কে বিড করে; যদি তারা 400 400 300 300 ডলার করে, কেউ জিততে পারে না। বিজয়ীর উচিত তারা যা বলেছিল তা প্রদান করা উচিত।

যেহেতু এটি "সিলড-বিড" নিলাম, একমাত্র তথ্য প্লেয়ার বিড সম্পর্কে বিজয়ী এবং পরবর্তী রাউন্ড শুরু হওয়ার পরে তারা কত অর্থ প্রদান করেছে তা সম্পর্কে জানতে পারবেন (যাতে খেলোয়াড় জানতে পারে যে প্রত্যেকের কতটা আছে)।


স্কোরিং

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


আইনসংগ্রহ

আপনার একটি সদস্য ফাংশন সহ পাইথন 3 শ্রেণি প্রয়োগ করা উচিত play_round(এবং __init__আপনার প্রয়োজনে অন্যরাও)। play_round3 টি যুক্তি (স্বসহ) গ্রহণ করা উচিত। দ্বিতীয় এবং তৃতীয় তর্কটি হবে যথাক্রমে: পূর্ববর্তী রাউন্ডের বিজয়ীর আইডি, তারপরে তারা কত অর্থ প্রদান করেছে। যদি কেউ না জিতে বা এটি প্রথম রাউন্ড হয় তবে তারা উভয়ই -1 হবে। আপনার আইডি সর্বদা 0 হবে এবং আইডি 1–3 কেবলমাত্র এই পোস্টের অবস্থানের দ্বারা নির্ধারিত ক্রমে অন্য খেলোয়াড় হবে।


অতিরিক্ত বিধি

1. নির্ধারক: আপনার ফাংশনটির আচরণ কেবল নিলামের মধ্যে ইনপুট আর্গুমেন্টের উপর নির্ভর করে। এটি হ'ল আপনি ফাইল, সময়, গ্লোবাল ভেরিয়েবল বা এমন কোনও কিছু অ্যাক্সেস করতে পারবেন না যা বিভিন্ন নিলাম বা বটের মধ্যে রাজ্য সংরক্ষণ করবে । আপনি যদি সিউডোরেন্ডম জেনারেটর ব্যবহার করতে চান তবে নিজের দ্বারা এটি লিখে নেওয়া ভাল (অন্যের প্রোগ্রামগুলিকে randomপাইথন লাইবের মতো প্রভাবিত করা রোধ করতে) এবং নিশ্চিত হয়ে নিন যে আপনি এটি একটি নির্দিষ্ট বীজের সাথে __init__বা প্রথম দফায় পুনরায় সেট করেছেন ।

২. প্রতি ব্যক্তি প্রতি তিনটি বট: আপনাকে সর্বাধিক 3 টি বট জমা দেওয়ার অনুমতি দেওয়া হয়েছে, যাতে আপনি কোনওভাবেই আপনার বটগুলিকে "সহযোগিতা" করার কৌশল তৈরি করতে পারেন can

৩. খুব বেশি ধীর নয়: যেহেতু অনেক নিলাম হবে, তাই নিশ্চিত হয়ে নিন যে আপনার বটগুলি খুব ধীরে চলবে না won't আপনার বটগুলি একটি সেকেন্ডে কমপক্ষে 1,000 নিলাম শেষ করতে সক্ষম হওয়া উচিত।


নিয়ামক

আমি যে নিয়ামকটি ব্যবহার করছি তা এখানে। সমস্ত বট আমদানি করা হবে এবং bot_listএই পোস্টে ক্রম যুক্ত করা হবে ।

# from some_bots import some_bots

bot_list = [
    #one_bot, another_bot, 
]

import hashlib

def decide_order(ls):
    hash = int(hashlib.sha1(str(ls).encode()).hexdigest(), 16) % 24
    nls = []
    for i in range(4, 0, -1):
        nls.append(ls[hash % i])
        del ls[hash % i]
        hash //= i
    return nls

N = len(bot_list)
score = [0] * N
total = [0] * N

def auction(ls):
    global score, total
    pl = decide_order(sorted(ls))
    bots = [bot_list[i]() for i in pl]
    dollar = [0] * 4
    prev_win, prev_bid = -1, -1
    for rounds in range(10):
        bids = []
        for i in range(4): dollar[i] += 500
        for i in range(4):
            tmp_win = prev_win
            if prev_win == i: tmp_win = 0
            elif prev_win != -1 and prev_win < i: tmp_win += 1
            bid = int(bots[i].play_round(tmp_win, prev_bid))
            if bid < 0 or bid > dollar[i]: raise ValueError(pl[i])
            bids.append((bid, i))
        bids.sort(reverse = True)
        winner = 0
        if bids[0][0] == bids[1][0]:
            if bids[2][0] == bids[3][0]: winner = -1
            elif bids[1][0] == bids[2][0]: winner = 3
            else: winner = 2
        if winner == -1:
            prev_win, prev_bid = -1, -1
        else:
            prev_bid, prev_win = bids[winner]
            score[pl[prev_win]] += 1
            total[pl[prev_win]] += prev_bid
            dollar[prev_win] -= prev_bid

for a in range(N - 3):
    for b in range(a + 1, N - 2):
        for c in range(b + 1, N - 1):
            for d in range(c + 1, N): auction([a, b, c, d])

res = sorted(map(list, zip(score, total, bot_list)), key = lambda k: (-k[0], k[1]))

class TIE_REMOVED: pass

for i in range(N - 1):
    if (res[i][0], res[i][1]) == (res[i + 1][0], res[i + 1][1]):
        res[i][2] = res[i + 1][2] = TIE_REMOVED
for sc, t, tp in res:
    print('%-20s Score: %-6d Total: %d' % (tp.__name__, sc, t))

উদাহরণ

আপনার যদি সিউডোর্যান্ডম জেনারেটর প্রয়োজন হয় তবে এখানে একটি সাধারণ simple

class myrand:
    def __init__(self, seed): self.val = seed
    def randint(self, a, b):
        self.val = (self.val * 6364136223846793005 + 1) % (1 << 64)
        return (self.val >> 32) % (b - a + 1) + a

class zero_bot:
    def play_round(self, i_dont, care): return 0

class all_in_bot:
    def __init__(self): self.dollar = 0
    def play_round(self, winner, win_amount):
        self.dollar += 500
        if winner == 0: self.dollar -= win_amount
        return self.dollar

class random_bot:
    def __init__(self):
        self.dollar = 0
        self.random = myrand(1)
    def play_round(self, winner, win_amount):
        self.dollar += 500
        if winner == 0: self.dollar -= win_amount
        return self.random.randint(0, self.dollar)

class average_bot:
    def __init__(self):
        self.dollar = 0
        self.round = 11
    def play_round(self, winner, win_amount):
        self.dollar += 500
        self.round -= 1
        if winner == 0: self.dollar -= win_amount
        return self.dollar / self.round

class fortytwo_bot:
    def play_round(self, i_dont, care): return 42

ফল

all_in_bot           Score: 20     Total: 15500
random_bot           Score: 15     Total: 14264
average_bot          Score: 15     Total: 20000
TIE_REMOVED          Score: 0      Total: 0
TIE_REMOVED          Score: 0      Total: 0

বিজয়ী হয় all_in_bot। নোট করুন zero_botএবং fortytwo_botএকই স্কোর এবং মোট আছে, যাতে সেগুলি সরানো হয়।

এই বটগুলি প্রতিযোগিতায় অন্তর্ভুক্ত হবে না। আপনি দুর্দান্ত মনে করেন আপনি এগুলি ব্যবহার করতে পারেন।


চূড়ান্ত প্রতিযোগিতাটি 2017/11/23 14:00 (ইউটিসি) এ অনুষ্ঠিত হবে । আপনি তার আগে আপনার বটগুলিতে যে কোনও পরিবর্তন করতে পারেন।


5
তারা কি প্রতিটি রাউন্ডে 500 ডলার, বা প্রতিটি নিলাম (যা 10 রাউন্ড স্থায়ী হয়) পান?
স্টিভি গ্রিফিন

1
তালিকা থেকে অপসারণকারী আপত্তিজনক বট দিয়ে কমিলড্রাকারি প্রতিযোগিতা পুনরায় শুরু হবে।
কোলেরা সু

4
@ শুফ্লিপ্যান্টস সত্য, তবে কোটএইচ চ্যালেঞ্জের ক্ষেত্রে এটি সর্বদা হয়। অতীতে কিছু লোক প্রকৃতপক্ষে শেষ পর্যন্ত একটি বট তৈরি করেছিল যাতে সমস্ত বিন্দু পর্যন্ত এই পয়েন্টটি মোকাবেলা করতে পারে। তবে এটি কোট-স্টাইল চ্যালেঞ্জের কেবল একটি অংশ part এবং বেশিরভাগ কোটএইচ-চ্যালেঞ্জগুলি যেভাবে কাজ করে, এতে একটি অন্তর্ভুক্ত রয়েছে, সুবিধাটি এত বড় হবে না। আপনি একই সাথে এতগুলি বট মোকাবেলা করতে পারেন .. চমৎকার প্রথম চ্যালেঞ্জ, কোলেরা সু , এবং পিপিসি তে আপনাকে স্বাগতম! ফলাফলের অপেক্ষায় রয়েছি। :)
কেভিন ক্রুইজসেন


2
এই মুহুর্তে এটি একটি দৃ race
জায়েদ

উত্তর:


13

hard_coded

class hard_coded:
  def __init__(self):
    self.money = 0
    self.round = 0

  def play_round(self, did_i_win, amount):
    self.money += 500
    self.round += 1
    if did_i_win == 0:
      self.money -= amount
    prob = [500, 992, 1170, 1181, 1499, 1276, 1290, 1401, 2166, 5000][self.round - 1]
    if prob > self.money:
      return self.money
    else:
      return prob    

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

সিদ্ধান্তগুলি কেবলমাত্র পূর্ববর্তী রাউন্ডগুলির ফলাফলের ভিত্তিতে নয়, কেবলমাত্র পরামিতিগুলির একটি নির্দিষ্ট সেটের ভিত্তিতে।

মূলটিকে প্রথম দফায় মনে হচ্ছে: আপনাকে সর্বস্বান্ত করতে হবে, 500 শুল্ক দেওয়া নিরাপদ পদক্ষেপ। প্রচুর পরিমাণে বট 499 বা 498 বিড করে প্রাথমিক পদক্ষেপটি আউটসামার্ট করার চেষ্টা করছে the প্রথম রাউন্ডে জিতে যাওয়া আপনাকে নিলামের বাকি অংশের জন্য একটি বড় সুবিধা দেয়। আপনি কেবল 500 ডলার পিছনে, এবং পুনরুদ্ধার করার জন্য আপনার কাছে সময় রয়েছে।

দ্বিতীয় রাউন্ডে একটি নিরাপদ বাজি 990 এর কিছুটা বেশি, তবে 0 বিড করাও কিছু ভাল ফলাফল দেয়। খুব বেশি বিড করা এবং জিতানো এই রাউন্ডটি হারানোর চেয়ে খারাপ হতে পারে।

তৃতীয় রাউন্ডে, বেশিরভাগ বটগুলি ক্রমবর্ধমান বন্ধ করে দেয়: তাদের মধ্যে 50% এর এখন পর্যন্ত 1500 ডলারেরও কম পরিমাণ রয়েছে, সুতরাং এই রাউন্ডে অর্থ নষ্ট করার দরকার নেই, 1170 একটি ভাল বাণিজ্য off চতুর্থ রাউন্ডে একই জিনিস। যদি আপনি প্রথম তিনটি হেরে যান তবে আপনি এটি খুব সস্তায় জিততে পারেন, এবং এখনও পরবর্তীটির জন্য পর্যাপ্ত অর্থ থাকতে পারে।

তারপরে, একটি রাউন্ড জয়ের জন্য প্রয়োজনীয় গড় অর্থ 1500 ডলার (যা যৌক্তিক উপসংহার: প্রত্যেকে এখন চারটির মধ্যে একটি রাউন্ড জিতবে, পরে জয়ের জন্য কম দামে অর্থ ব্যয় করা ঠিক, পরিস্থিতি স্থিতিশীল হয়েছে এবং এটি কেবল গোল- রবিন এখন থেকে)।

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

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


1
ওয়েল, এটি জয়ের এক উপায়। অভিনন্দন!
লুকা এইচ

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

আমি বুঝতে পারি, আমি কিছু অন্যান্য জমাও পছন্দ করেছি (এবং উন্নত) করেছি তবে এটি সীমাবদ্ধ ডোমেনে সমস্যা এবং অনেকগুলি জমা দেওয়া খুব জটিল। সমস্যার মূলটি 10 ​​সংখ্যার ক্রম তৈরি করছে, তাই আমি একটি সাধারণ পদ্ধতি অনুসন্ধানের পরিবর্তে একটি নির্দিষ্ট ডোমেনের জন্য অনুকূলিতকরণ বেছে নিয়েছি। আমি প্রকৌশলী, গণিতবিদ নই।
জিবি

2
@ লুকাহ এই পদ্ধতির আপাত সরলতা এই নির্দিষ্ট সংখ্যায় পৌঁছানোর জন্য প্রয়োজনীয় কাজের পরিমাণকে বোঝায়। আমি একটি পরিসংখ্যানগত দৃষ্টিকোণ থেকে আমার নিজের বটের সাথে একই রকমের চেষ্টা করছিলাম, এবং এটি সহজ ছিল না
জায়েদ

1
@ জায়েড অবশ্যই এতে প্রচুর কাজ চলছে, তবে বর্বরভাবে জোর করা ঠিক তাই ... হিংস্র;)
লুকা এইচ

12

গড় উপরে

অন্যান্য খেলোয়াড়দের গড় পরিমাণ অর্থের উপরে বিড সর্বশেষ রাউন্ডে বিড করুন।

class above_average:
  def __init__(self):
    self.round = 0
    self.player_money = [0] * 4
  def play_round(self, winner, winning_bid):
    self.round += 1
    self.player_money = [x+500 for x in self.player_money]
    if winner != -1:
      self.player_money[winner] -= winning_bid
    if self.round == 10:
      return self.player_money[0]
    bid = sum(self.player_money[1:]) / 3 + 1
    if bid > self.player_money[0]:
      return self.player_money[0]
    return min(self.player_money[0], bid)

12

আই ডোন্ট ইভেন

class I_Dont_Even:
	def __init__(self):
		self.money = 0
		self.round = 0
	def play_round(self, loser, bid):
		self.money += 500 - (not loser) * bid
		self.round += 1
		return self.money * (self.round & 1 or self.round == 10)

শুধুমাত্র বিজোড় রাউন্ড এবং শেষ রাউন্ডে অংশ নেয়।


7

ভুলে যাওয়া বট জানে না তার কত টাকা আছে, তাই তিনি কেবল এই রাউন্ডের জন্য যে টাকা দিয়েছিলেন তা রেখে দেয়। যদি সে তার শেষে কিছু অর্থ পেয়ে থাকে তবে সে কেবল এটি একটি দাতব্য প্রতিষ্ঠানে দান করে।

class forgetful_bot:
  def play_round(self, winner, amt):
    return 500

15
আমি ডাউনভোটার নই, তবে সম্ভবত এটি 'আপনি নিজের বোটে কোনও প্রচেষ্টা করেননি
Mischa

9
এটি প্রথম উত্তরগুলির মধ্যে একটি। বলটি ঘূর্ণায়মান হওয়ার জন্য কিছু প্রয়োজন।
খুলনায়সথ না'বাড়িয়া

আমি ডাউনওয়েট করি নি, তবে সম্ভবত এটি কারণ বল ঘূর্ণায়মান কিছু পাওয়ার দরকার পরেও কিছুটা আকর্ষণীয় কিছু করতে পারে? বিশেষত যেহেতু এটি ওয়ান ডলার বব হিসাবে ব্যবহারিকভাবে অভিন্ন, যা এটির শুরু করার জন্য ব্যবহৃত হয়েছিল
HyperNeutrino

7

ওয়ান আপার

পাইথন সম্পর্কে আমি বেশি কিছু জানি না, তাই আমি একরকম ত্রুটি করতে পারি

class one_upper:
    def __init__(self): 
        self.money = 0
        self.round = 0
    def play_round(self, winner, win_amount):
        self.money += 500
        if winner == 0: self.money -= win_amount
        self.round += 1
        bid = win_amount + 1
        if self.money < bid or self.round == 10:
            bid = self.money
        return bid

বিডগুলি আগের বিজয়ী বিডের চেয়ে 1 টি বেশি, বা শেষ রাউন্ডের সময় অল-ইন হয়।

ভবিষ্যতে কখন win_amount-1 হবে তার জন্য আলাদা কৌশল নিয়ে সিদ্ধান্ত নিতে পারি


7

রোগী বট

class patient_bot:
    def __init__(self):
        self.round = 0
        self.money = 0
    def rand(self, seed, max):
        return (394587485 - self.money*self.round*seed) % (max + 1)
    def play_round(self, winner, amount):
        self.round += 1
        self.money += 500
        if winner == 0:
            self.money -= amount
        if self.round < 6:
            return 0
        else:
            bid = 980 + self.rand(amount, 35)
            if self.money < bid or self.round == 10:
                bid = self.money
            return bid

প্রথম পাঁচটি রাউন্ডের জন্য কিছু না বলে বিড করুন, তারপরে পরবর্তী চার রাউন্ডের জন্য ~ 1000 ডলারকে বিড করুন এবং শেষ অবধি যা আছে তার সবগুলিকে বিড করুন everything


7

কপির্যাট বা স্যাড

তৃতীয় এবং চূড়ান্ত বট।
এই বট পূর্ববর্তী বিজয়ীর (একইভাবে নিজেকে) সমান পরিমাণে বিড করবে। যাইহোক, যদি এটির পর্যাপ্ত নগদ না থাকে তবে এটি দুঃখজনক হবে এবং তার পরিবর্তে তার টিয়ার সাথে একটি মজাদার 1 ডলার বিলে বিড করবে। চূড়ান্ত রাউন্ডে এটি সর্বাত্মক হবে।

class copycat_or_sad:
  def __init__(self):
    self.money = 0
    self.round = -1
  def play_round(self, winner, win_amount):
    # Default actions:
    #  Collect 500 dollars
    self.money += 500
    #  If it was the winner: subtract the win_amount from his money
    if winner == 0:
      self.money -= win_amount
    #  One round further
    self.round += 1

    # If it's the final round: bid all-in
    if self.round == 9:
      return self.money
    # Else-if there was no previous winner, or it doesn't have enough money left: bid 1
    if win_amount < 1 or self.money < win_amount:
      return 1
    # Else: bid the exact same as the previous winner
    return win_amount

আমি পাইথনে কখনও প্রোগ্রাম করি না, তাই যদি কোনও ভুল দেখতে পান তবে আমাকে জানান ..


2
এই নিলাম -1প্রথম নিলামে।
Okx

7

টেস্ট রান

আমি স্টিডিবক্স একসাথে রাখা পূর্ববর্তী পরীক্ষার রান সম্পাদনা করেছি এবং নতুন জমাগুলিতে যোগ করেছি।

আমি এটি এখানে পোস্ট করছি তাই এমন একটি জায়গা যেখানে লিঙ্কটি আরও সাম্প্রতিক সংস্করণগুলির সাথে আপডেট করা যেতে পারে, এই পোস্টটি একটি সম্প্রদায়ের উইকি তাই নতুন আপডেট জমা দিলে, পুরানোটিকে সংশোধন করে, বা কেবল কিছু দেখলে তা নির্দ্বিধায় আপডেট করতে পারে অন্য কিছু জমা থেকে নতুন!

পরীক্ষার রানের লিঙ্কটি এখানে! (Tio)


আমার হতাশ হওয়া উচিত যে আমার বটটি বাধাগ্রস্ত করতে চেয়েছিল তা আমার দুটি "সত্য" জমা দিতে পারে?
thegreatemu

@ থেগ্রিয়েটেমু এটি দেখতে আকর্ষণীয় যে বটগুলি একে অপরের সাথে কীভাবে যোগাযোগ করে। একটি নতুন বট নাটকীয়ভাবে র‌্যাঙ্কিংকে পরিবর্তন করতে পারে। আমি আকর্ষণীয় কিছু খুঁজে পেয়েছি হিস্টোক্র্যাট এর মুছে ফেলা ব্ল্যাকলিস্ট বট যদি অংশ নেয়, আমার দুটি বট র‌্যাঙ্কিংয়ের শীর্ষে চলে যায়। :)
জো।

6

হাফ ইন

এই বট সর্বদা চূড়ান্ত রাউন্ড ব্যতীত এটি যা ছেড়ে গেছে তার অর্ধেককে বিড দেয়।

class half_in:
  def __init__(self):
    self.money = 0
    self.round = -1
  def play_round(self, winner, win_amount):
    # Default actions:
    #  Collect 500 dollars
    self.money += 500
    #  If it was the winner: subtract the win_amount from his money
    if winner == 0:
      self.money -= win_amount
    #  One round further
    self.round += 1

    # If it's the final round: bid all in
    if self.round == 9:
      return self.money
    # Else: Bid half what it has left:
    return self.money / 2

আমি পাইথনে কখনও প্রোগ্রাম করি না, তাই যদি কোনও ভুল দেখতে পান তবে আমাকে জানান ..


6

Graylist

class Graylist:
  def __init__(self):
    self.round = 0
    self.player_money = [0] * 4
    self.ratios = {1}
    self.diffs = {0}
  def play_round(self, winner, winning_bid):
    self.round += 1
    if winner != -1:
      if winner >0 and winning_bid>0:
        self.ratios.add(self.player_money[winner]/winning_bid)
        self.diffs.add(self.player_money[winner]-winning_bid)
      self.player_money[winner] -= winning_bid
    self.player_money = [x+500 for x in self.player_money]
    tentative_bid = min(self.player_money[0],max(self.player_money[1:])+1, winning_bid+169, sum(self.player_money[1:])//3+169)
    while tentative_bid and (tentative_bid in (round(m*r) for m in self.player_money[1:] for r in self.ratios)) or (tentative_bid in (m-d for m in self.player_money[1:] for d in self.diffs)):
      tentative_bid = tentative_bid - 1
    return tentative_bid

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

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


6

AverageMine

এই খেলোয়াড় প্রতিটি রাউন্ডের বিজয়ীর জন্য শতাংশ (বিড / মোট অর্থ) গণনা করে এবং তার (মোট অর্থ * গড় বিজয়ী শতাংশ + 85) বিড করে যদি না তার অন্য সমস্ত খেলোয়াড়ের চেয়ে বেশি অর্থ থাকে তবে তারপরে তিনি সর্বোচ্চ প্রতিযোগীর চেয়ে আরও 1 টি বিড করেন । প্রারম্ভিক পরিমাণের 99.0% এর বিড দিয়ে শুরু হয়।

class AverageMine:
    nplayers = 4
    maxrounds = 10
    def __init__(self):
        self.money = [0] * self.nplayers
        self.wins = [0] * self.nplayers
        self.round = 0
        self.average = 0
    def play_round(self, winner, win_amt):
        self.round += 1
        for i in range(self.nplayers):
            if i == winner:
                self.average = (self.average * (self.round - 2) + (win_amt / self.money[i])) / (self.round - 1)
                self.money[i] -= win_amt
                self.wins[i] += 1
            self.money[i] += 500
        if self.round == 1:
            return int(0.990 * self.money[0])
        elif self.round < self.maxrounds:
            if self.money[0] > self.money[1] + 1 and self.money[0] > self.money[2] + 1 and self.money[0] > self.money[3] + 1:
                return max(self.money[1],self.money[2],self.money[3]) + 1
            bid = int(self.average * self.money[0]) + 85
            return min(self.money[0],bid)
        else:
            bid = self.money[0]
            return bid

6

Enেনি মিনি আরও

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

class eenie_meanie_more:
    def __init__(self):
        self.money = [0] * 4
        self.rounds = 11
        self.total_spent = 0

    def play_round(self, winner, winning_bid):
        self.money = [x+500 for x in self.money]
        self.rounds -= 1
        if winner != -1:
            self.money[winner] -= winning_bid
            self.total_spent += winning_bid
        bid = 500
        if self.rounds > 0 and self.total_spent < 20000:
            bid = int((20000 - self.total_spent)/self.rounds/4)+440
        return min(bid, max(self.money[1:])+1, self.money[0])

5

Distributer

এই বটটি যখন একটি রাউন্ড হারায়, তখন তিনি পরবর্তী সমস্ত রাউন্ডের মধ্যে অতিরিক্ত নগদ বিতরণ করেন। তিনি প্রথম রাউন্ডে 499 ডলার রাখেন এই ভেবে যে অন্যরা 500 ডলার দিয়ে টাই করবেন এবং তা নির্মূল হয়ে যাবে।

class distributer:
  def __init__(self):
    self.money = 0
    self.rounds = 11
  def play_round(self, winner, amt):
    self.money += 500
    self.rounds -= 1
    if self.rounds == 10:
      return 499
    if winner == 0:
      self.money -= amt
    return ((self.rounds - 1) * 500 + self.money) / self.rounds

1
roundsপরিবর্তে ব্যবহার করা self.roundsত্রুটি ঘটবে। একই সঙ্গে money
জেরেমি ওয়েরিচ

5

লোভী ব্যক্তি

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

class meanie:
    def __init__(self):
        self.money = [0] * 4
        self.rounds = 11
        self.total_spent = 0

    def play_round(self,winner,winning_bid):
        self.money = [x+500 for x in self.money]
        self.rounds -= 1
        if winner != -1:
            self.money[winner] -= winning_bid
            self.total_spent += winning_bid
        bid = 500
        if self.rounds > 0 and self.total_spent < 20000:
            bid = int((20000 - self.total_spent)/self.rounds/4)+1
        return min(bid,max(self.money[1:])+1,self.money[0])

5

বিজয়ীকে বীট করুন

এখন পর্যন্ত সর্বাধিক জয়ের সাথে খেলোয়াড়ের চেয়ে আরও 1 টি বিড করুন

class BeatTheWinner:
    nplayers = 4
    maxrounds = 10
    def __init__(self):
        self.money = [0] * self.nplayers
        self.wins = [0] * self.nplayers
        self.round = 0

    def play_round(self, winner, win_amt):
        self.round += 1
        for i in range(self.nplayers):
            self.money[i] += 500
            if i == winner:
                self.money[i] -= win_amt
                self.wins[i] += 1
        mymoney = self.money[0]
        for w,m in sorted(zip(self.wins, self.money),reverse=True):
            if mymoney > m:
                return m+1
        #if we get here we can't afford our default strategy, so
        return int(mymoney/10)

4
আপনি m,wকি সঠিক ক্রমে আছেন?
জো।

5

বিয়োগ এক

class minus_one:
    def __init__(self):
        self.money = 0
    def play_round(self, winner, amount):
        self.money += 500
        if winner == 0:
            self.money -= amount
        return self.money - 1

5

বিড উচ্চতর

class bid_higher:
    def __init__(self):
        self.dollar = 0
        self.round = 0
    def play_round(self, winner, win_amount):
        self.dollar += 500
        self.round += 1
        inc = 131
        if winner == 0: self.dollar -= win_amount
        if self.round == 10: return self.dollar
        if win_amount == 0: win_amount = 500
        if self.dollar > (win_amount + inc):
            return win_amount + inc
        else:
            if self.dollar > 1:
                return self.dollar -1
            else:
                return 0

এখনও অজগর শিখছি; শেষ বিজয়ীর চেয়ে কিছুটা বেশি বিড করুন।


পিপিসিজিতে আপনাকে স্বাগতম! দেখে মনে হচ্ছে আপনার বট আরও ভাল স্কোর পায় যদি আপনি এটি পরিবর্তন inc = 100করেন inc = 101
স্টেডিবক্স

আমি এখানে সত্যিই আমার নিজের স্বার্থের বিরুদ্ধে যাচ্ছি, তবে আপনি খুব সহজেই
লিও

পরামর্শের জন্য ধন্যবাদ; আমি সর্বশেষে সর্বমোট যোগ করেছি, ইনক্রিমেন্টটি সূক্ষ্ম করেছি, এবং এই
বোটকে আরও

হাই, আমি আশা করি আপনি আপত্তি করবেন না, তবে আমি বর্তমান সমস্ত জমা দিয়ে একটি টেস্টবেঞ্চ একসাথে রেখেছিলাম এবং আমি জানতে পেরেছি যে আপনার কোডটি মাঝে মাঝে শেষ দফায় অবৈধ মানগুলি ফিরিয়ে নিয়ে আসছিল, তাই আমি পুনরায় ব্যবস্থা করে বাগটি স্থির করেছি অর্ডার কয়েক লাইন। দুঃখিত, আমি যদি আপনার কিছু না থেকে কিছু পরিবর্তন করে থাকি তবে পরিবর্তনগুলি আবার ফিরিয়ে নিতে এবং বাগটিকে অন্য উপায়ে ঠিক করতে নির্দ্বিধায়!
লিও

@ লিও: সমস্যা নেই, আগ্রহী হওয়ার জন্য ধন্যবাদ ..
রানসিড_বানানা

4

FiveFiveFive

প্রথম রাউন্ড এড়িয়ে যান এবং বাকি রাউন্ডগুলিতে $ 555 বিড করুন। শেষ রাউন্ডে, 2 টি অন্যান্য বটের সমান পরিমাণ না থাকলে (এবং সম্ভবত সংঘবদ্ধভাবে আবদ্ধ হবে) সমস্ত কিছুতে যাবে।

class FiveFiveFive:
    nplayers = 4
    maxrounds = 10
    def __init__(self):
        self.money = [0] * self.nplayers
        self.wins = [0] * self.nplayers
        self.round = 0

    def play_round(self, winner, win_amt):
        self.round += 1
        for i in range(self.nplayers):
            self.money[i] += 500
            if i == winner:
                self.money[i] -= win_amt
                self.wins[i] += 1
        if self.round == 1:
            return 0
        elif self.round < self.maxrounds:
            return min(555, self.money[0])
        else:
            bid = self.money[0]
            return bid if self.money.count(bid) < 3 else bid-1

4

প্রায় সব ইন

class Almost_All_In:
	def __init__(self):
		self.money = 0
		self.round = 0
	def play_round(self, loser, bid):
		self.money += 500 - (not loser) * bid
		self.round += 1
		return self.money - self.round % 3 * 3 - 3

সর্বদা বিড করুন এর চেয়ে কিছুটা কম।


4

দ্রুত বর্ধন

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

class escalating:
  def __init__(self):
    self.money = 0
    self.round = 0
  def play_round(self, winner, win_amount):
    # Default actions:
    #  Collect 500 dollars
    self.money += 500
    #  If it was the winner: subtract the win_amount from his money
    if winner == 0:
      self.money -= win_amount
    #  One round further
    self.round += 1

    # bid round number in percent times remaining money, floored to integer
    return self.money * self.round // 10

4

গড় নীচে

উপরের গড়ের মতো, তবে কিছুটা কম যায়

class below_average:
  def __init__(self):
    self.round = 0
    self.player_money = [0] * 4
  def play_round(self, winner, winning_bid):
    self.round += 1
    self.player_money = [x+500 for x in self.player_money]
    if winner != -1:
      self.player_money[winner] -= winning_bid
    if self.round == 10:
      return self.player_money[0]
    bid = sum(self.player_money[1:]) / 3 - 2
    if bid > self.player_money[0]:
      return self.player_money[0]
    return min(self.player_money[0], bid)

4

HighHorse

এই প্লেয়ারটি সর্বশেষ রাউন্ড ব্যতীত তার সমস্ত অর্থ বিয়োগ বর্তমান রাউন্ড নম্বরটি বিড করে where

class HighHorse:
    maxrounds = 10
    def __init__(self):
        self.money = 0
        self.round = 0
    def play_round(self, winner, win_amt):
        self.round += 1
        if 0 == winner:
            self.money -= win_amt
        self.money += 500
        if self.round < self.maxrounds:
            return self.money - self.round
        else:
            bid = self.money
            return bid

4

Swapper

একটিকে তার সর্বোচ্চের অধীনে বিড করা এবং সব কিছুতে যাওয়ার মধ্যে বিকল্প।

class Swapper:
    def __init__(self):
        self.money = 0
        self.round = 0
    def play_round(self, loser, bid):
        self.money += 500 - (not loser) * bid
        self.round += 1
        if self.round & 1:
            return self.money - 1
        return self.money

আমি অনুভব করেছি যে আমার কাছে এমন কিছু সন্ধান করা দরকার যা স্টেডিবক্সের বিয়োগফলকে পরাজিত করতে পারে। :)


4

মডুলার ব্ল্যাকলিস্ট

class blacklist_mod:
  def __init__(self):
    self.round = 0
    self.player_money = [0] * 4
    self.blacklist = {0, 499}
  def play_round(self, winner, winning_bid):
    self.round += 1
    self.player_money = [x+500 for x in self.player_money]
    if winner != -1:
      self.player_money[winner] -= winning_bid
      self.blacklist.add(winning_bid % 500)
      self.blacklist |= {x % 500 for x in self.player_money[1:]}
    tentative_bid = self.player_money[0]
    autowin = max(self.player_money[1:])+1
    if tentative_bid < autowin:
      while tentative_bid and (tentative_bid % 500) in self.blacklist:
        tentative_bid = tentative_bid - 1
    else:
      tentative_bid = autowin
    self.blacklist.add(tentative_bid % 500)
    return tentative_bid

এটি সর্বাধিক পরিমাণে বেটাতে পারে যা এটি আগে দেখা কোনও সংখ্যার সাথে একত্রে মডুলো 500 নয়।

কোনও গ্যারান্টিযুক্ত জিত পেতে পারে এমন কালো তালিকা প্রয়োগ না করার জন্য সম্পাদিত।


কৌতূহলজনকভাবে, মনে হচ্ছে আপনার অন্যান্য বটের সর্বশেষ আপডেটটি এই বটকে নেতিবাচকভাবে প্রভাবিত করছে। বর্তমানে, লিডারবোর্ডেblacklist_mod পঞ্চম রয়েছে , অন্যদিকে blacklistরয়েছে। এর পরিবর্তে যদি পুরানো সংস্করণ blacklistব্যবহার করা blacklistহয় তবে ষষ্ঠ স্থানে পড়ে তবে blacklist_mod নেতৃত্ব নেয় !
স্টিডিবক্স

নিক্ষেপ blacklistপুরাপুরি আউট বলে মনে হয় দিতে blacklist_modএমনকি একটি আরো কঠিন নেতৃত্ব , কিন্তু যে মীমাংসাহীন আছে।
স্টেডিবক্স

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

4

Heurist

Heurist , বারবার সম্ভাবনা এক হিসাবে এই গেমটি একইরূপে তাই তা জানেন যেখানে লাইন আঁকতে।

এটি কৃপণভাবেও হয়, সুতরাং এটি যখন জিততে পারে তখন এটির জন্য প্রয়োজনীয় সর্বনিম্ন বিড দেয়।

class heurist:
    def __init__(self):
        self.money = 0
        self.round = -1
        self.net_worth = [0] * 4
    def play_round(self, winner, bid):
        self.round += 1
        self.money += 500
        if winner == 0: self.money -= bid
        if winner != -1: self.net_worth[winner] -= bid
        self.net_worth = [x+500 for x in self.net_worth]
        max_bid = [498,1000,1223,1391,1250,1921,2511,1666,1600,5000][self.round]
        if self.money > max_bid:
            return 1 + min(max_bid,max(self.net_worth[1:3]))
        else:
            return self.money

অস্বীকৃতি: max_bidপরিবর্তন সাপেক্ষে


4

bob_hater

এই বোটটি ববকে পছন্দ করে না এবং এইভাবে ববের বিরুদ্ধে জিততে সর্বদা 2 id কে বিড করে।

class bob_hater:
    def play_round(bob,will,loose):
        return 2

4

Showoff

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

class Showoff:
  def __init__(self):
      self.moneys = [0, 0, 0]
      self.roundsLeft = 10
  def play_round(self, winner, winning_bid):
      import math
      self.moneys = [self.moneys[0] + 500,
                     self.moneys[1] + 1500,
                     self.moneys[2] + 1500]
      self.roundsLeft -= 1
      if winner > 0:
          self.moneys[1] -= winning_bid
      if winner == 0:
          self.moneys[0] -= winning_bid
      if self.roundsLeft == 0:
          return self.moneys[0]
      ratio = self.moneys[1] / self.moneys[2]
      logisticized = (1 + (math.e ** (-8 * (ratio - 0.5)))) ** -1
      return math.floor(self.moneys[0] * logisticized)

ব্যবহৃত লজিস্টিক কার্ভটি হ'ল চ (এক্স) = 1 / (1 + ই -8 (এক্স-0.5%) ), যেখানে এক্সটি বর্তমান শত্রু-অর্থের সংখ্যার সম্পূর্ণ সম্ভাব্য শত্রু-অর্থের অনুপাত। অন্যদের যত বেশি, তিনি তত বেশি বিড করেন। প্রথম দফায় প্রায়-তবে-না-বেশ প্রায় 500 ডলার বিড করার সম্ভাব্য সুবিধা এটির রয়েছে ।


3

AntiMaxer

সমস্ত খেলোয়াড়ের অর্থ সাধ্যের মধ্যে আমরা সর্বোচ্চ পরিমাণে মেলে। যে রাউন্ডে অল-ইন যাওয়ার জন্য কোনও বট তৈরি হয়ে যাবে।

class AntiMaxer:
    nplayers = 4
    maxrounds = 10
    def __init__(self):
        self.money = [0] * self.nplayers
        self.wins = [0] * self.nplayers
        self.round = 0

    def play_round(self, winner, win_amt):
        self.round += 1
        for i in range(self.nplayers):
            self.money[i] += 500
            if i == winner:
                self.money[i] -= win_amt
                self.wins[i] += 1
        return max((m for m in self.money[1:] if m<=self.money[0]),
                   default=0)    

3

সরল বট

class simple_bot:
    def __init__(self):
        self.round = 0
        self.money = 0
    def rand(self, seed, max):
        return (394587485 - self.money*self.round*seed) % (max + 1)
    def play_round(self, winner, amount):
        self.round += 1
        self.money += 500
        if winner == 0:
            self.money -= amount
        bid = 980 + self.rand(amount, 135)
        if self.money < bid or self.round == 10:
            bid = self.money
        return bid

রোগী বটের মতো প্রায়, তবে রোগীর মতো নয়। যদিও এর চেয়ে অনেক বেশি ভাল স্কোর পায় ।


3

উইংম্যান ২

যদি একজন উইংম্যান ভাল হয় তবে দু'জনকে আরও ভাল হতে হবে?

class wingman_2:
    def __init__(self):
        self.dollar = 0
        self.round = 0
    def play_round(self, winner, win_amount):
        self.round += 1
        self.dollar += 500
        inc = 129
        if win_amount == 0: win_amount = 500
        if winner == 0: self.dollar -= win_amount
        if self.round == 10: return self.dollar
        if self.dollar > win_amount + inc:
            return win_amount + inc
        else:
            if self.dollar > 1: return self.dollar -1
            else:
                return 0

আপনার কোডটি কাজ করবে না কারণ শ্রেণিতে
স্টাফের

মজার বিষয় হল, আপনার উভয় উইংম্যান আপনার মূল বটকে মারতে বলে মনে হচ্ছে (পেস্টবিনের লিঙ্কটিতে টিআইও লিঙ্ক রয়েছে, যা কোনও মন্তব্যে পোস্ট করার জন্য অনেক দীর্ঘ এবং ইউআরএল সংক্ষিপ্ততর এমনকি খুব দীর্ঘ ...)
স্টেডিবক্স

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