歴史的背景
遮蔽壁は、日付がバックにいることを戦術的な戦争の形成である少なくとも 2500 BC。それは、「壁」を形成するために、彼らの盾と仲間の盾を重ねる戦士で構成されていました。戦術の魅力は、最も熟練していない戦士でさえ、盾と武器を持っていれば壁で戦うことができるという事実に由来しています。壁が近接しているため、動き回るスペースがほとんどなく、戦闘は通常、鋭い武器で戦う必殺の試合になりました。
チャレンジ
あなたのタスクは、入力として戦士の2つの配列/リスト/ベクトルを与えられ、戦いの結果を決定するプログラムまたは関数を作成することです。リストはシールドの単一行の壁を表し、特定の表記法に従います。
バイキング:
北欧の戦士たちは激しい戦いを繰り広げました。8世紀後半から11世紀半ばにかけて、デンマークのバイキングが英国王国に侵入し、富と農地を探しました。この挑戦のために、これらはバイキングの戦士です:
J
arl:通常、壁の中央から部下を率いているのが見つかりました。ジャールはバイキングの大群のリーダーでした。死ぬために15ダメージを受け、ラウンドごとに2ダメージを与えます。- The
B
erserker:ファンタジーはバーサーカーのイメージを大きく変えましたが、これらの戦士は盾以外の保護なしでトランスのような怒りで戦うことが知られていました。死ぬために6ダメージを受け、ラウンドごとに3ダメージを与えます。 C
hieftain:ザ・チーフタンズが彼らのサービスで無料の男性が持っていた金持ちの男性でした。彼らは通常、戦いで大きな栄光と富を獲得していたでしょう。死ぬまでに10ダメージを受け、ラウンドごとに2ダメージを与えます。- フリー
M
en:族長に仕えた戦士。彼らは死ぬまで領主のために戦うと誓った。死ぬために8ダメージを受け、ラウンドごとに1ダメージを与えます。 S
kald:Skalds、通常バードとして翻訳は、北欧の戦士たちの偉業についての詩、物語や歌を書くために雇われた自由人の男性でした。死亡するのに8ダメージを受け、隣接する各戦士に1ボーナスダメージを与えます。スカルドはダメージを与えません。戦士はこの方法で1つ以上のボーナスダメージを得ることができません。
サクソン:
5世紀にローマ帝国が崩壊した後、サクソン人はヨーロッパ大陸からイギリスに定住するようになりました。この挑戦のために、サクソン人の戦士がいます:
E
ARL:Ealdormen、一般アールズと呼ばれるが、高い貴族のメンバーでした。彼らは通常、大規模な土地を持ち、何百人または何千人もの宣誓者がいました。死ぬまでに20ダメージを受け、1ラウンドにつき1ダメージを与えます。K
夜:より良い用語の欠如のために、騎士は、いくつかの土地を所有していたマイナーな貴族でした。ほとんどの場合、騎士は伯爵の宣誓奉公人でした。死ぬまでに10ダメージを受け、ラウンドごとに2ダメージを与えます。W
arrior:一般的な男性、通常はマイナーな貴族の土地や騎士を務めた農民なし。騎士または伯爵に隣接している場合、戦士には+1のダメージボーナスがあります。死ぬまでに8ダメージを受け、ラウンドごとに2ダメージを与えます。F
YRD:Fyrdは、彼らが壁に戦うために持っていた武器(あるいは武器のような実装農業を)持って来るだろうと自由人のグループのような民兵-、通常は貧しい農民でした。死ぬために5ダメージを受け、ラウンドごとに1ダメージを与えます。P
司祭:司祭は神の言葉の先駆者であり、初期のサクソン文化で高く評価されていました。司祭は死ぬために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.
ルール:
- デフォルトの抜け穴が適用されます。
- 任意の便利なIOメソッドを使用できます。
- これはcode-golfなので、最短のコード(言語ごとのバイト単位)が優先されます。
- あなたはないかもしれないリストの長さが同じになると仮定し、彼らがします常に(リストのサイズが異なる場合は、必ず各リストの戦士の数が奇数になります)、それらの中心に整列可能であること。
- 真偽値を出力できます。「バイキング/サクソンの勝利」に相当するものを答えてください。
- 敗者は、壁のすべての戦士が死んだときに決定されます。
コードの実行中に位置合わせできない壁ができた場合は、壁をできるだけ中央に揃えて、長い壁に1人余分に戦士を残します。例えば:
[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)
)