ひらめき
この質問は、人気のあるデッキ構築カードゲームDominionの玉座の間と王宮に触発されています。
ターンの一部として、一連のアクションを実行します。これら2つの特定のアクションにより、次に再生されるアクションが2、3回繰り返されます*。他の「一般的な」アクションは特定のゲーム効果を引き起こしますが、詳細には興味がなく、単に文字でラベル付けするだけです。
興味深いのは、玉座の間または王宮が別の王宮の玉座に影響を及ぼし、倍増または三倍効果自体が倍または三重になる場合です。玉座の間の長いチェーン、キングコート、および複数のアクションは、経験豊富なDominionプレイヤーでさえ混乱させる可能性があります。
あなたの目標は、可能な限り少ないバイトを使用して、これらのチェーンを正しく解決するコードを書くことです。Dominionルールでチェーンがどのように解決されるかを説明する前に、プログラムの要件について説明します。
*技術的には、玉座の部屋または王の裁判所の解決の一環として影響を受けるアクションを選択しますが、このビューはこの課題に対してよりクリーンです。
プログラム要件
プログラムまたは名前付き関数を作成します。再生された一連のアクション(STDINまたは関数入力)を取り込み、2倍および3倍の効果から得られた一連のアクションを出力または印刷する必要があります。少ないバイトが勝ちます。
入力
再生されたアクションのシーケンスを表す文字列。一般的なアクションは大文字で表されA
てZ
。特別なダブリングアクションの玉座の間は、キャラクター2
で表され、トリプルアクションのキングズコートは3
、
文字(アクション)の数は、1〜30の間です。必要に応じて、改行で入力を終了することができます。
入力例: WA23G3GA
出力
大文字の文字列A
へZ
。これは、2倍効果と3倍効果を、発生する順序で解決した結果生じる一連の一般的なアクションである必要があります。
必要に応じて、出力を改行で終わらせることができます。それ以外の場合、追加の文字はありません。
出力例:WAGGGGGGAAA
。
Dominionでの2倍および3倍の仕組み
ここでは、ドミニオンのルールに従って、玉座の間(2
)と王宮()のチェーンがどのように機能するかを説明し3
ます。
をプレイした後2
、解決すべき次のアクションが2回発生します。したがって、最初にを再生した場合2
、次にA
が発生しますA
。
2A -> AA
同様に、
A2BC -> ABBC
3DE -> DDDE
3N2BC3XY2 -> NNNBBCXXXY
最後の例では、決勝戦2
に倍増するものは何もなかったため、効果がないことに注意してください。
興味深いのは、2倍または3倍の効果自体が2倍または3倍になった場合です。例えば、
22AB -> AABB
まず、あなたがプレイし2
ます。次に、別のを再生します。2
これは、前のから2倍になり2
ます。その結果、次の2つのアクションが2倍になります。まず、A
解決の2つのコピー。次に、B
解決のコピー。
A
4倍ではないことに注意してください。最初のコピーが最初に2
動作したA
後、次のコピーは次の未解決の動作に作用しB
ます。なしではB
、
22A -> AA
の2番目のコピーは2
次のアクションが2倍になるのを待っていますが、アクションは発生しません。
最後に、複雑な例を見てみましょう。
223BCDE -> BBBCCCDDE
前と同じように、最初のもの2
は2番目のもの2
を2倍にします。したがって、次の2つのアクションは2倍になります。の最初のコピーは2
次のアクションを2倍にします。次のアクションは3
、の次のコピーを解決する前に完全に解決する必要があります2
。3
トリプルの最初のコピーB
、および2番目のコピートリプルC
。現在、まだ待機中の2番目のコピーは2
、次の未解決のアクションを2倍にしD
ます。この後、2倍または3倍の効果は残りませんE
。最終的なアクションが発生します。
テストケース
これらはとして与えられます(input,output)
。
(FY, FY)
(A2BC, ABBC)
(3DE, DDDE)
(3N2BC3XY2, NNNBBCXXXY)
(WA23G3GA, WAGGGGGGAAA)
(32, )
(33RST, RRRSSSTTT)
(2A32B2CDEFG, AABBCCDDEEFG)
(A2A323AB2CD2D2E3ABC, AAAAAABBBCCDDDDEEAAABBBC)
(P22LL3Q2Q22T, PLLLLQQQQQTT)
(322322ABCDEFGHIJKLMN, AABBCCDDEEEFFGGHHIJKLMN)
1
スタックの下にをプッシュして、乗算されていないアクションを乗算されたアクションと同じように扱うトリックが好きです。さまざまなスタックをジャグリングする方法について詳しく説明していただけますか?特に、「担当者スタックを一番上に持ってくる」ために何をしますか?