Inspiration
Diese Frage ist von den Karten Throne Room und King's Court aus dem beliebten Kartenspiel Dominion inspiriert .
Als Teil des Zuges spielt man eine Abfolge von Aktionen. Diese beiden Aktionen bewirken, dass die nächste Aktion zwei- oder dreimal wiederholt wird *. Andere "generische" Aktionen verursachen bestimmte Spieleffekte, aber wir sind nicht an den Details interessiert, sondern kennzeichnen sie einfach mit Buchstaben.
Der interessante Fall ist, wenn ein Thronsaal oder ein Königshof einen anderen Thronsaal des Königshofs betrifft, wodurch sich der Verdopplungs- oder Verdreifachungseffekt verdoppelt oder verdreifacht. Lange Ketten von Thronsälen, Königshöfen und multiplizierten Aktionen können selbst erfahrene Dominion-Spieler verwirren.
Ihr Ziel ist es, Code zu schreiben, der diese Ketten korrekt auflöst, und dabei so wenig Bytes wie möglich zu verwenden. Ich werde die Programmanforderungen beschreiben, bevor ich erkläre, wie die Ketten in den Dominion-Regeln aufgelöst werden.
* Technisch gesehen wählen Sie die betroffene Aktion als Teil der Lösung von Thronsaal oder Königshof aus, aber diese Ansicht ist für diese Herausforderung besser geeignet.
Programmanforderungen
Schreiben Sie ein Programm oder eine benannte Funktion . Es sollte die gespielte Aktionskette (STDIN oder Funktionseingabe) einbeziehen und die resultierende Aktionskette aus den Auswirkungen der Verdopplung und Verdreifachung ausgeben oder ausdrucken. Wenigste Bytes gewinnt.
Eingang
Eine Zeichenfolge, die die Abfolge der ausgeführten Aktionen darstellt. Generisches Aktionen werden durch Großbuchstaben dargestellt A
durch Z
. Die besondere Verdoppelungsaktion Thronsaal wird durch die Figur dargestellt 2
, und die Verdreifachungsaktion Königshof durch 3
:
Die Anzahl der Zeichen (Aktionen) liegt zwischen 1 und 30 einschließlich. Wenn Sie möchten, können Sie das Eingabeende in einer neuen Zeile einfügen.
Beispiel Eingabe: WA23G3GA
Ausgabe
Eine Folge von Großbuchstaben A
an Z
. Dies sollte die Folge von generischen Aktionen sein, die sich aus der Beseitigung der Verdopplungs- und Verdreifachungseffekte in der Reihenfolge ergeben, in der sie auftreten.
Wenn Sie möchten, können Sie die Ausgabe in einer neuen Zeile beenden. Ansonsten sollten keine zusätzlichen Zeichen vorhanden sein.
Beispiel Ausgabe: WAGGGGGGAAA
.
Wie das Verdoppeln und Verdreifachen im Dominion funktioniert
Hier gehe ich durch , wie Ketten des Thron Zimmer ( 2
s) und den Königs Courts ( 3
's) Arbeit gemäß den Dominion - Regeln.
Nachdem Sie eine gespielt haben 2
, wird die nächste auszuführende Aktion zweimal ausgeführt. Also, wenn Sie zum ersten Mal spielen 2
, dann A
, Sie bekommen A
geschieht zweimal.
2A -> AA
Ähnlich,
A2BC -> ABBC
3DE -> DDDE
3N2BC3XY2 -> NNNBBCXXXY
Beachten Sie im letzten Beispiel, dass das Finale 2
nichts zu verdoppeln hatte, so dass es keine Wirkung hatte.
Das Interessante passiert, wenn Doppel- oder Verdreifachungseffekte selbst verdoppelt oder verdreifacht werden. Beispielsweise,
22AB -> AABB
Zuerst spielst du 2
. Dann spielen Sie einen anderen 2
, der gegenüber dem vorherigen verdoppelt ist 2
. Infolgedessen werden die nächsten beiden Aktionen verdoppelt. Erstens, die beiden Kopien der A
Auflösung. Dann werden die Kopien aufgelöst B
.
Beachten Sie, dass dies A
nicht vervierfacht wird: Nach der ersten Kopie von 2
Aktionen auf der ersten A
wirkt die nächste Kopie auf die nächste nicht aufgelöste Aktion, nämlich B
. Ohne die hätten B
wir
22A -> AA
Wobei die zweite Kopie von darauf 2
wartet, dass sich die nächste Aktion verdoppelt, aber es kommt keine Aktion.
Schauen wir uns zum Schluss ein komplexes Beispiel an.
223BCDE -> BBBCCCDDE
Nach wie vor 2
bewirkt der erste, dass der zweite 2
verdoppelt wird. Die nächsten beiden Aktionen werden also verdoppelt. Die erste Kopie von 2
verdoppelt die nächste Aktion3
, die vollständig aufgelöst werden muss, bevor die nächste Kopie von aufgelöst wird 2
. Das erste Exemplar 3
verdreifacht B
sich und das zweite Exemplar verdreifacht sich C
. Jetzt 2
verdoppelt die noch wartende zweite Kopie von die nächste noch ungelöste Aktion, nämlich D
. Danach bleiben keine Verdopplungs- oder Verdreifachungseffekte mehr übrig, und die endgültige Aktion findet E
einfach statt.
Testfälle
Diese sind gegeben als (input,output)
.
(FY, FY)
(A2BC, ABBC)
(3DE, DDDE)
(3N2BC3XY2, NNNBBCXXXY)
(WA23G3GA, WAGGGGGGAAA)
(32, )
(33RST, RRRSSSTTT)
(2A32B2CDEFG, AABBCCDDEEFG)
(A2A323AB2CD2D2E3ABC, AAAAAABBBCCDDDDEEAAABBBC)
(P22LL3Q2Q22T, PLLLLQQQQQTT)
(322322ABCDEFGHIJKLMN, AABBCCDDEEEFFGGHHIJKLMN)
1
wenn du 's unter den Stapel drückst, um nicht multiplizierte Aktionen genauso zu behandeln wie multiplizierte. Könnten Sie bitte näher erläutern, wie Sie die verschiedenen Stapel unter einen Hut bringen? Was kann ich tun, um den Wiederholungsstapel nach oben zu bringen?