Историческая справка
Щитовая стена - это тактическая военная формация, которая восходит как минимум к 2500 году до нашей эры. Он состоял из воинов, накладывающих свои щиты на щиты своих спутников, образуя «стену». Привлекательность этой тактики проистекает из того факта, что даже самый неквалифицированный воин может сражаться в стене, если у него есть щит и оружие. Из-за близости стен было мало места для перемещения, и битва обычно превращалась в пушечный бой с острым оружием.
Соревнование
Ваша задача - создать программу или функцию, которая с учетом двух массивов / списков / векторов воинов в качестве входных данных решает исход битвы. Списки будут представлять собой однострочную стену щитов, и они будут следовать определенной записи:
Викинги:
У нордических воинов была сильная жажда битвы. В конце 8-го - середине 11-го веков датские викинги вторглись в королевства Британии в поисках богатства и обрабатываемой земли. Для решения этой задачи это воины викингов:
J
ARL: Обычно нашел ведущую свои человек от центра стены, Ярл были лидерами викинга орд. Получает 15 урона, чтобы умереть, и наносит 2 урона за раунд.B
Erserker: Хотя фантазия сильно скручены образ берсерков, эти воины были известны сражаться в транс , как ярость без какой - либо защиты, кроме щитов. Получает 6 повреждений, чтобы умереть, и наносит 3 повреждения за раунд.C
Hieftain: Вожди были богатыми людьми , которые имели свободные человек на их обслуживание. Они обычно получали бы великую славу и богатство в бою. Получает 10 урона, чтобы умереть, и наносит 2 урона за раунд.- The Free
M
en: Воины, которые служили вождю. Они поклялись сражаться за своих лордов до самой смерти. Получает 8 урона, чтобы умереть, и наносит 1 урон за раунд. S
Kald: Skalds, обычно переводится как барда, были свободными людьми , которые были наняты , чтобы писать стихи, рассказы или песни о великих подвигах скандинавских воинов. Получает 8 урона, чтобы умереть, и дает каждому смежному воину 1 дополнительный урон. Скальды не наносят урона. Таким образом, воины не могут получить более 1 бонусного урона.
саксы:
Саксы пришли поселиться в Британии из континентальной Европы после падения Римской империи в 5 веке. Для целей этого испытания есть воины саксонцев:
E
ARL: Ealdormen , обычно называют Earls, были членами высшего дворянства. Они обычно держали большие участки земли и имели сотни или даже тысячи присяжных. Получает 20 урона, чтобы умереть, и наносит 1 урон за раунд.K
Ночь: Из- за отсутствия лучшего термина, что рыцари были небольшие дворяне, владевшие участок земли. В большинстве случаев рыцари были присяжными слугами графа. Получает 10 урона, чтобы умереть, и наносит 2 урона за раунд.- В
W
arrior: Общие мужчины, как правило , мелкие дворяне без земли или крестьян, служивших рыцарь. Когда рядом с Рыцарем или Графом, у воинов есть бонус +1 к урону. Получает 8 урона, чтобы умереть, и наносит 2 урона за раунд. F
YRD: Фирд была милиция, как группа свободных людей, как правило , бедных фермеров, которые бы принести любое оружие (или оружие, как сельское хозяйство реализации) они должны были бороться в стене. Получает 5 урона, чтобы умереть, и наносит 1 урон за раунд.- В
P
riest: Священники были высоко оценены в начале саксонской культуры, являясь вестниками слов Бога. Жрецы получают 15 урона, чтобы умереть, и предотвращают до 1 урона каждому соседнему воину. Священники не наносят ущерба. Священники не могут предотвратить более 1 повреждения воина.
Стена
Стены встречаются в их центрах. Каждый раунд каждый воин назначает урон воину, находящемуся прямо перед ним, или, если перед ним нет живого воина, живому воину, находящемуся по диагонали с наименьшим количеством здоровья. Если есть галстук, выберите воина ближе к краю стены.
Пример:
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.
Правила:
- Применяются стандартные лазейки .
- Вы можете использовать любой удобный метод ввода-вывода .
- Это код-гольф , поэтому выигрывает самый короткий код (в байтах на язык).
- Вы не можете предполагать, что списки будут иметь одинаковую длину, но они всегда будут выравниваться в своих центрах (в каждом списке всегда будет нечетное количество воинов, если списки имеют разные размеры).
- Вы можете вывести любое значение truey / falsey. Пожалуйста, укажите в своем ответе эквиваленты «Викинг / Саксонская победа».
- Проигравший определяется, когда все воины стены мертвы.
Если вы когда-нибудь столкнетесь со стенами, которые не будут выровнены во время выполнения кода, выровняйте их как можно более центрально, оставив одного дополнительного воина на более длинной стене с правой стороны. Например:
[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]
Не стесняйтесь пробовать и тестировать свой код с любыми настройками стен, а не только в тестовых примерах.
Тестовые случаи:
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.)
------------------------------
Есть некоторые исторические неточности. Не стесняйтесь указывать на них, и я сделаю все возможное, чтобы исправить их.
(health, damage, damagebonus, protbonus)
)