Bối cảnh lịch sử
Bức tường khiên là một đội hình chiến tranh có từ ít nhất 2500 trước Công nguyên. Nó bao gồm các chiến binh chồng lên khiên của họ với những người bạn đồng hành của họ để tạo thành một 'bức tường'. Sức hấp dẫn của chiến thuật này đến từ việc ngay cả một chiến binh không có kỹ năng nhất cũng có thể chiến đấu trong một bức tường miễn là họ có khiên và vũ khí. Bởi vì sự gần gũi của các bức tường, có rất ít không gian để di chuyển, và trận chiến thường trở thành một trận đấu xô đẩy được chiến đấu với vũ khí sắc bén.
Các thách thức
Nhiệm vụ của bạn là tạo ra một chương trình hoặc chức năng, đưa ra hai mảng / danh sách / vectơ của các chiến binh làm đầu vào, quyết định kết quả của trận chiến. Các danh sách sẽ đại diện cho một bức tường khiên đơn, và chúng sẽ tuân theo một ký hiệu cụ thể:
Người Viking:
Các chiến binh Bắc Âu đã có một nỗ lực quyết liệt cho trận chiến. Trong khoảng thời gian từ cuối thế kỷ thứ 8 đến giữa thế kỷ 11, những người Viking ở Đan Mạch đã xâm chiếm vương quốc Anh để tìm kiếm sự giàu có và đất nông nghiệp. Với mục đích của thử thách này, đây là những chiến binh của các vikings:
- Các
J
arl: Thường được tìm thấy dẫn dắt người đàn ông của mình từ trung tâm của bức tường, bình là người lãnh đạo của các nhóm viking. Gây 15 sát thương để chết và gây 2 sát thương mỗi vòng. - The
B
erserker: Mặc dù tưởng tượng đã làm thay đổi đáng kể hình ảnh của những kẻ điên cuồng, những chiến binh này được biết là chiến đấu trong một cơn giận dữ giống như trance mà không có bất kỳ loại bảo vệ nào ngoài khiên chắn. Gây 6 sát thương để chết và gây 3 sát thương mỗi vòng. - The
C
hieftain: Chieftains là những người đàn ông giàu có những người đàn ông tự do phục vụ. Họ thường kiếm được vinh quang lớn và giàu có trong trận chiến. Gây 10 sát thương để chết và gây 2 sát thương mỗi vòng. - The Free
M
en: Các chiến binh phục vụ một thủ lĩnh. Họ đã tuyên thệ chiến đấu cho lãnh chúa của họ cho đến khi chết. Gây 8 sát thương để chết và gây sát thương 1 điểm mỗi vòng. - The
S
kald: Skalds, thường được dịch là bards, là những người tự do được thuê để viết những bài thơ, câu chuyện hoặc bài hát về những việc làm vĩ đại của các chiến binh Bắc Âu. Gây 8 sát thương để chết và cho mỗi chiến binh sát thương thêm 1 điểm sát thương. Skalds không gây sát thương. Chiến binh không thể nhận được nhiều hơn 1 điểm sát thương theo cách này.
Đàn kèn
Người Saxon đến định cư ở Anh từ lục địa châu Âu sau sự sụp đổ của Đế chế La Mã vào thế kỷ thứ 5. Với mục đích của thử thách này, có những chiến binh của saxophone:
- Các
E
arl: Ealdormen , thường được gọi là Earls, là thành viên của giới quý tộc cao hơn. Họ thường nắm giữ những dải đất lớn và có hàng trăm thậm chí hàng ngàn người đàn ông đã tuyên thệ. Gây 20 sát thương để chết và gây sát thương 1 điểm mỗi vòng. - Các
K
đêm: Đối với thiếu một thuật ngữ tốt hơn, các hiệp sĩ đã quý tộc nhỏ người sở hữu một số đất đai. Trong hầu hết các trường hợp, các hiệp sĩ là những người hầu tuyên thệ cho một Bá tước. Gây 10 sát thương để chết và gây 2 sát thương mỗi vòng. - Người
W
chiến binh: Những người đàn ông bình thường, thường là những quý tộc nhỏ không có đất hoặc nông dân phục vụ một hiệp sĩ. Khi liền kề với một Hiệp sĩ hoặc Bá tước, các chiến binh có phần thưởng sát thương +1. Gây 8 sát thương để chết và gây 2 sát thương mỗi vòng. - The
F
yrd: Fyrd là một nhóm người tự do giống như dân quân, thường là nông dân nghèo, họ sẽ mang theo bất kỳ vũ khí nào (hoặc nông cụ giống như vũ khí) mà họ phải chiến đấu trên tường. Gây 5 sát thương để chết và gây sát thương 1 điểm mỗi vòng. - Điều
P
tuyệt vời nhất: Các linh mục được đánh giá cao trong văn hóa Saxon thời kỳ đầu, được báo trước những lời của Thiên Chúa. Các linh mục nhận 15 sát thương để chết và ngăn chặn tối đa 1 sát thương mỗi chiến binh liền kề sẽ bị xử lý. Linh mục không gây sát thương. Các linh mục không thể ngăn chặn hơn 1 thiệt hại cho một chiến binh.
Bức tường
Tường gặp nhau tại trung tâm của họ. Mỗi vòng, mỗi chiến binh sẽ gây sát thương cho chiến binh ngay trước mặt hoặc, nếu không có chiến binh sống trước mặt, chiến binh sống theo đường chéo có ít máu nhất. Nếu có cà vạt, hãy chọn chiến binh ở sát mép tường.
Thí dụ:
Vikings
[M,M,M,B,B,C,J,C,B,B,M,M,M]
[F,F,F,W,W,K,E,K,W,W,F,F,F]
Saxons
To make matters easier, let's convert these walls into numbers:
Round 0:
M M M B B C J C B B M M M
[8,8,8,6,6,10,15,10,6,6,8,8,8]
[5,5,5,8,8,10,20,10,8,8,5,5,5]
F F F W W K E K W W F F F
Round 1: Notice that 2 of the Saxons' warriors are adjacent to Knights, so they have a +1 damage bonus.
M M M B B C J C B B M M M
[7,7,7,4,3,8,14,8,3,4,7,7,7]
| | | | | | || | | | | | |
[4,4,4,5,5,8,18,8,5,5,4,4,4]
F F F W W K E K W W F F F
Round 2:
M M M B B C J C B B M M M
[6,6,6,2,0,6,13,6,0,2,6,6,6]
| | | | | | || | | | | | |
[3,3,3,2,2,6,16,6,2,2,3,3,3]
F F F W W K E K W W F F F
Round 3: Remember to collapse the arrays to account for dead warriors. Also, notice that the 2 outermost Fyrd are now attacking the diagonally adjacent viking.
M M M B C J C B M M M
[4,5,4,0,4,12,4,0,4,5,4]
/| | | | | || | | | | |\
[2,2,2,1,0,4,14,4,0,1,2,2,2]
F F F W W K E K W W F F F
Round 4: Notice once again the saxon Warriors next to the Knights dealing 3 damage:
M M M C J C M M M
[2,4,1,2,11,2,1,4,2]
/| | | | || | | | |\
[2,1,1,0,2,12,2,0,1,1,2]
F F F W K E K W F F F
Round 5:
M M M C J C M M M
[1,3,0,0,10,0,0,3,1]
| | | | || | | | |
[1,0,0,0,10,0,0,0,1]
F F F K E K F F F
Round 6:
M M J M M
[1,2,9,2,1]
\| | |/
[0,8,0]
F E F
Rounds 7 and 8:
M M J M M M M J M M
[1,2,8,2,1] [1,2,8,2,1]
\|/ \|/
[4] [0]
E E
Output: Viking victory.
Quy tắc:
- Lỗ hổng mặc định áp dụng.
- Bạn có thể sử dụng bất kỳ phương pháp IO thuận tiện .
- Đây là mã golf , vì vậy mã ngắn nhất (tính bằng byte, trên mỗi ngôn ngữ) sẽ thắng.
- Bạn có thể không cho rằng các danh sách sẽ có cùng độ dài, nhưng chúng sẽ luôn được xếp thẳng hàng tại trung tâm của chúng (sẽ luôn có một số lượng chiến binh lẻ trong mỗi danh sách nếu danh sách có kích cỡ khác nhau).
- Bạn có thể xuất bất kỳ giá trị trung thực / falsey. Vui lòng ghi rõ trong câu trả lời của bạn tương đương với "chiến thắng Viking / Saxon".
- Người thua cuộc được xác định khi tất cả các chiến binh của một bức tường đã chết.
Nếu bạn kết thúc với những bức tường không thể căn chỉnh trong quá trình thực thi mã, hãy căn chỉnh chúng càng tập trung càng tốt, để lại một chiến binh phụ trên bức tường dài hơn ở phía bên phải. Ví dụ:
[M,M,M,J,M,M,M] [K,E,K,W]; [B,B,B,J] [K,K,W,W,K,E,K,W,W,K,K]
Hãy thử và kiểm tra mã của bạn với bất kỳ thiết lập tường nào, không chỉ các mã trong các trường hợp thử nghiệm.
Các trường hợp thử nghiệm:
V: [M,M,B,C,B,C,J,C,B,C,B,M,M]
S: [F,F,W,K,W,K,E,K,W,K,W,F,F]
O: Viking victory.
------------------------------
V: [M,M,M,M,M,M,M,M,M,M]
S: [W,W,W,W,W,W,W,W,W,W]
O: Saxon victory.
------------------------------
V: [B,C,M,B,C,M,M,C,B,M,C,B,M]
S: [W,F,W,F,E,E,E,F,W,F,W]
O: Viking victory.
------------------------------
V: [B,B,B,J,B,B,B]
S: [W,W,W,W,K,K,K,E,K,K,K,W,W,W,W]
O: Saxon victory.
------------------------------
V: [J]
S: [E]
O: Viking victory.
------------------------------
V: [C,C,C,C,B,B,M,M,M,M,J,J,J,M,M,M,M,B,B,C,C,C,C]
S: [K,K,K,K,K,K,K,K,K,K,W,E,W,K,K,K,K,K,K,K,K,K,K]
O: Saxon victory.
------------------------------
V: [M,M,S,C,B,J,B,C,S,M,M]
S: [F,K,P,W,K,E,K,W,P,K,F]
O: Saxon victory.
------------------------------
V: [S,S,S,...,S]
S: [P,P,P,...,P]
O: UNDEFINED (since both priests and skalds deal no damage, you can output anything here.)
------------------------------
Có một số điểm không chính xác trong lịch sử. Vui lòng chỉ ra chúng và tôi sẽ cố gắng hết sức để khắc phục chúng.
(health, damage, damagebonus, protbonus)
)