Đưa ra hai danh sách các cuộn súc sắc cho một trận chiến trong Rủi ro, chương trình hoặc chức năng của bạn phải xuất ra số lượng quân mà mỗi người chơi bị mất.
Lý lịch
Bạn không cần phải đọc cái này, vì nó chỉ là nền tảng. Bỏ qua phân nhóm "Nhiệm vụ" để tiếp tục không suy giảm.
Trong trò chơi Rủi ro , một người chơi có thể tấn công người chơi khác (thực tế, điều này là cần thiết để giành chiến thắng). Kết quả của một trận chiến được xác định bằng việc tung xúc xắc. Mỗi trận chiến xảy ra như một chuỗi các trận chiến phụ, trong đó mỗi người chơi có thể thua tối đa 2
quân đội của mình.
Trong một trận chiến phụ, người phòng thủ và kẻ tấn công mỗi người tung vài con xúc xắc có số lượng có thể thay đổi tùy theo hoàn cảnh không liên quan đến thử thách này. Cái chết có giá trị cao nhất của kẻ tấn công được so sánh với cái chết có giá trị cao nhất của người phòng thủ. Nếu cái chết của kẻ tấn công cao hơn cái chết của người phòng thủ, thì người phòng thủ sẽ mất một mảnh. Nếu không, kẻ tấn công mất một mảnh.
Sau đó, nếu cả hai người chơi có ít nhất hai con xúc xắc, thì con xúc xắc có giá trị cao thứ hai của hai người chơi được so sánh. Một lần nữa, nếu cái chết của kẻ tấn công cao hơn cái chết của người phòng thủ, thì người phòng thủ sẽ mất một mảnh. Nếu không, kẻ tấn công mất một mảnh.
(Người bảo vệ giành được mối quan hệ. Nếu cả người phòng thủ và kẻ tấn công lăn một 4
, thì kẻ tấn công sẽ mất một mảnh.)
Trong trận chiến phụ từ bài viết trên Wikipedia, xúc xắc của kẻ tấn công có màu đỏ và xúc xắc của người phòng thủ có màu trắng. Cao nhất của xúc xắc của kẻ tấn công là 4
và cao nhất của người phòng thủ là 3
. Vì kẻ tấn công cao hơn, người phòng thủ mất một mảnh. Cao thứ hai là 3
cho kẻ tấn công và 2
cho người phòng thủ. Vì kẻ tấn công lại cao hơn, nên người phòng thủ mất một mảnh khác. Do đó, trong trận chiến phụ này, kẻ tấn công không mất quân cờ và kẻ phòng thủ mất quân 2
cờ.
Lưu ý rằng các phần cao thứ ba không được so sánh. Điều này là do người bảo vệ không có nhiều hơn hai con xúc xắc trong một trận chiến phụ, do đó không có quân cờ nào cao thứ ba để so sánh.
Bài tập
Với các cuộn xúc xắc chưa được sắp xếp (các số nguyên trong phạm vi từ 1 đến 6) của cả kẻ tấn công và người bảo vệ một trận chiến Rủi ro phụ dưới bất kỳ hình thức thuận tiện nào, hãy xuất ra số quân đội mỗi người chơi bị mất. Đầu ra có thể ở bất kỳ dạng thuận tiện nào, miễn là nó có đầu ra khác nhau để chỉ ra năm khả năng. Bạn phải cho biết những đầu ra khác nhau trong câu hỏi của bạn là gì.
Đầu ra được xác định như sau: Bắt đầu với def=0
và atk=0
. Nếu giá trị lớn nhất của danh sách cuộn xúc xắc của kẻ tấn công lớn hơn giá trị lớn nhất của danh sách cuộn xúc xắc của người phòng thủ, thì hãy tăng dần def
. Nếu không, tăng lên atk
.
Nếu cả hai danh sách cuộn xúc xắc có độ dài ít nhất 2
, thì: nếu giá trị lớn thứ hai của danh sách cuộn xúc xắc của kẻ tấn công lớn hơn giá trị lớn thứ hai của danh sách, sau đó tăng def
và ngược lại atk
.
Cuối cùng, chương trình hoặc chức năng phải xuất ra một mã định danh duy nhất cho mỗi 5 khả năng đầu ra sau đây:
╔═══╦═══╗
║atk║def║
╠═══╬═══╣
║ 1 ║ 0 ║
║ 0 ║ 1 ║
║ 2 ║ 0 ║
║ 1 ║ 1 ║
║ 0 ║ 2 ║
╚═══╩═══╝
Thí dụ
Defender: [3, 2]
Attacker: [2, 4, 1]
Max của defender là 3
và max của kẻ tấn công là 4
. 4>3
, vì vậy def=1
Thứ hai của hậu vệ là 2
và thứ hai của kẻ tấn công là 2
. Not(2>2)
, Vì vậy atk=1
. Đầu ra sau đó có thể là [1,1]
.
Các trường hợp thử nghiệm
Defender
Attacker
Output (as [def,atk])
-----
[1]
[1]
[0,1]
-----
[6,6]
[1,1,1]
[0,2]
-----
[1,2]
[5,2,3]
[2,0]
-----
[5]
[3,4]
[0,1]
-----
[4]
[4,5]
[1,0]
-----
[1,3]
[1,2,3]
[1,1]
-----
[4]
[4,5,6]
[1,0]
-----
[4,5]
[6,2]
[1,1]
-----
[5]
[6,1,3]
[1,0]
-----
[5,5]
[4,4,1]
[0,2]
-----
[2,5]
[2,2]
[0,2]
-----
[6,6]
[4,4,3]
[0,2]
-----
[2,1]
[4,3]
[2,0]
-----
[4]
[1,5]
[1,0]
-----
[1]
[5,2]
[1,0]
-----
[6,2]
[4]
[0,1]
-----
[4,2]
[2,5,5]
[2,0]
-----
[2]
[6,6,2]
[1,0]
-----
[6]
[2,6]
[0,1]
-----
[3,1]
[1]
[0,1]
-----
[6,2]
[3,5,2]
[1,1]
-----
[4,2]
[1,1]
[0,2]
-----
[4,3]
[5,4,1]
[2,0]
-----
[5,6]
[1,2]
[0,2]
-----
[3,2]
[4,4]
[2,0]
-----
[2]
[6,3,4]
[1,0]
-----
[1,4]
[6,2,4]
[2,0]
-----
[4,2]
[2,5,4]
[2,0]
-----
[5]
[6,2,1]
[1,0]
-----
[3]
[2,5,4]
[1,0]
-----
[5,4]
[2]
[0,1]
-----
[6,3]
[2,6,5]
[1,1]
-----
[3,1]
[4]
[1,0]
-----
[4]
[6,6,5]
[1,0]
-----
[6,3]
[4,2]
[0,2]
-----
[1,6]
[5,4]
[1,1]
-----
[3,6]
[4,4]
[1,1]
-----
[5,4]
[5,1,1]
[0,2]
-----
[6,3]
[5,4]
[1,1]
-----
[2,6]
[1,2]
[0,2]
-----
[4,2]
[3,5,5]
[2,0]
-----
[1]
[1,2,1]
[1,0]
-----
[4,5]
[1,6]
[1,1]
-----
[1]
[3,5,1]
[1,0]
-----
[6,2]
[6,2]
[0,2]
Mẫu thực hiện
Python 2 hoặc 3
def risk(atk_rolls,def_rolls):
# set the rolls in descending order, e.g. [5,3,2]
atk_rolls = sorted(atk_rolls,reverse = True)
def_rolls = sorted(def_rolls,reverse = True)
# minimum length.
minlen = min(len(atk_rolls),len(def_rolls))
atk_lost = 0
def_lost = 0
# compare the highest-valued rolls
if atk_rolls[0]>def_rolls[0]:
def_lost += 1
else:
atk_lost += 1
if minlen == 2:
# compare the second-highest-valued rolls
if atk_rolls[1] > def_rolls[1]:
def_lost += 1
else:
atk_lost += 1
return [def_lost, atk_lost]
Thông số kỹ thuật
- Đầu vào có thể được thực hiện dưới dạng bất kỳ hình thức nào chỉ mã hóa rõ ràng các cuộn của người phòng thủ và cuộn của kẻ tấn công.
- Đầu ra có thể ở bất kỳ dạng nào cung cấp một đầu ra duy nhất cho mỗi năm khả năng được liệt kê ở trên.
- Cuộn của hậu vệ là một danh sách
1
hoặc2
số nguyên trong tập hợp[1,2,3,4,5,6]
. Cuộn của kẻ tấn công là một danh sách1
để3
nguyên trong tập[1,2,3,4,5,6]
. - Vì đây là môn đánh gôn , mã ngắn nhất trong mỗi ngôn ngữ sẽ thắng! Đừng không để cho câu trả lời trong ngôn ngữ chơi golf không khuyến khích bạn đăng tải câu trả lời trong các ngôn ngữ khác.