Ý tưởng của thử thách này rất đơn giản: tạo một bot để chơi trò chơi bài Euchre.
Đối với những người bạn chưa biết về họ, tôi đã viết ra các quy tắc cho Euchre ở đây khi họ liên quan đến thử thách này.
Tôi khuyên bạn nên sử dụng python hoặc một cái gì đó tương tự, nhưng hạn chế thực sự duy nhất là nó phải tương thích với mã điều khiển
Đầu vào:
Bot euchre của bạn sẽ nhận được các loại đầu vào khác nhau tùy thuộc vào giai đoạn hiện tại của trò chơi hoặc vòng. Nói chung, bạn sẽ có được giai đoạn trò chơi trên dòng đầu tiên theo sau là dấu phẩy và số điểm mà nhóm của bạn có, và sau đó là dữ liệu có liên quan trên các dòng sau.
Theo thời gian, bot của bạn sẽ nhận được đầu vào theo thứ tự sau:
Ordering Trump:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
ordering // the phase of the game
th // the turned up card
p,p // each previous player’s decision
Naming Trump:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
naming // the phase of the game
p // each previous player’s decision
Dealer Discarding:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
discard // the phase of the game
th // the card you will pick up
Going alone:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
alone // the phase of the game
h // the trump suit
n,n // each previous player’s decision
Your turn:
js,ah,qc,ts,jc // the cards in your hand
2 // number of points your team has
0 // number of tricks your team has taken
turn // the phase of the game
h // the trump suit
td,8h,p // each previous player’s card
Trick data:
// the cards in your hand (none, since this happens at the end of a trick)
2 // number of points your team has
1 // number of tricks your team has taken
trick // the phase of the game
0 // the index of the following list that is your card
js,tc,4d,js // the cards played during the trick in the order they were played
Đầu ra:
Bot euchre của bạn sẽ có đầu ra khác nhau tùy thuộc vào giai đoạn hiện tại của trò chơi hoặc vòng.
Ordering Trump:
p //for pass
OR
o //for order up
Naming Trump:
p //for pass
OR ANY OF
c,s,h,d //the suit you want to name
Going alone:
n // no
OR
y // yes
Your turn:
js //the card you want to play
Ghi điểm:
Điểm số bot của bạn là tổng số trò chơi mà nó thắng.
Bot của bạn sẽ chơi với mọi bot khác và nó sẽ luôn được hợp tác với một bản sao của chính nó.
Ghi chú:
Đây là một mẫu đơn giản trong python2.7:
#!/usr/bin/python2.7
import sys
data = sys.stdin.readlines()
hand = data[0].strip().split(',') # Hand as a list of strings
points = int(data[1]) # Number of points
tricks = int(data[2]) # Number of tricks
out = ''
if data[3] == 'ordering':
card = data[4] # The upturn card
prev = data[5].strip().split(',') # The previous player's decisions as a list
# Ordering logic
out = # 'o' or 'p'
elif data[3] == 'naming':
prev = data[4].strip().split(',') # The previous player's decisions as a list
# Naming logic
out = # 'p', 'h', 's', 'c', or 'd'
elif data[3] == 'discard':
card = data[4] # The card you'll take
# Discarding logic
out = # The card you want to discard
elif data[3] == 'alone':
trump = data[4] # The trump suit
prev = data[5].strip().split(',') # The previous player's decisions as a list
# Alone logic
out = # 'y' for yes, 'n' for no
elif data[3] == 'turn':
trump = data[4] # The trump suit
prev = data[5].strip().split(',')
# Turn logic
out = # The card you want to play
elif data[3] == 'trick':
trump = data[5]
cards = data[6].strip().split(',')
my_card = cards[int(data[4])]
# Data logic
print(out)
Sẽ luôn có 4 câu trả lời. Nếu ai đó đi một mình, thì phản ứng của đối tác của họ sẽ là "p" trong lượt của họ.
Tôi đã cố gắng giảm số lượng đầu vào dư thừa, để rõ ràng hơn:
2a. Cả vị trí của bạn so với đại lý / lãnh đạo và thẻ mà đối tác của bạn đã chơi có thể được xác định bằng số lượng đầu ra trước đó. Có 1 người chơi giữa bạn và đối tác của bạn. Ở đó, ví dụ, nếu bạn nhận được "td, 8h, p" là dòng cuối cùng trong lượt của mình, bạn có thể thấy đối tác của mình đã chơi 8h và đội khác có một người chơi đang đi một mình.
Nếu bạn tò mò, thỏa thuận được thực hiện theo cách truyền thống (trong hai vòng xen kẽ các gói 2 và 3 thẻ) nhưng điều đó không thực sự phù hợp với bot của bạn, vì vậy ...
Nếu người chơi thứ hai quyết định đặt hàng trong giai đoạn át chủ bài, giai đoạn đó sẽ tiếp tục, nhưng kết quả đầu ra của họ sẽ bị bỏ qua khá nhiều. Nói cách khác, bất cứ ai đặt hàng trước đều thuộc nhóm Namers bất kể đầu ra nào khác.
Sau đây là các mặc định cho các giai đoạn trò chơi khác nhau. Nếu bạn không đưa ra phản hồi hợp lệ cho vòng đó, thì phản hồi của bạn sẽ được thay đổi thành những gì bên dưới.
Đặt hàng Trump: p
Đặt tên Trump: p
Loại bỏ: (thẻ đầu tiên trong tay của bạn)
Đi một mình: n
Lượt của bạn: (thẻ hợp pháp đầu tiên trong tay bạn)
Đây là mã điều khiển cho mục đích thử nghiệm của bạn.
6a. Lưu ý rằng bạn có thể chuyển vào 2 hoặc 4 tên bot, nếu bạn cho nó 4 bot thì chúng sẽ được hợp tác ngẫu nhiên và với 2 chúng được hợp tác với các bản sao của chính chúng.
6b. Bạn cần một thư mục 'bot' trong cùng thư mục với mã điều khiển và mã bot của bạn cần nằm trong thư mục bot.
Đối với những người muốn bot của họ nhớ những thẻ đã được chơi, bạn sẽ có cơ hội trong giai đoạn "lừa", thông báo cho bot của bạn biết những thẻ nào đã được chơi. Bạn có thể ghi vào một tệp trong thư mục bot miễn là tệp đó không vượt quá 1kb.
Bảng điểm:
Old Stager: 2
Marius: 1
Random 8020: 0