Trò chơi Vẫy tay nằm ở đâu đó giữa Ma thuật bằng giấy bút: Lượm và Kéo giấy Rock rất công phu. Mỗi lượt bạn viết ra một trong tám cử chỉ cho mỗi tay:
- ngọ nguậy
Fingers - chìa
Palm Sngủ trưaWaveDchỉ điểmCvạt áo- sta
B Nnhẹ nhàng
Có một vài quy tắc quan trọng được ưu tiên so với phần còn lại:
- Nếu cả hai tay ra hiệu
Pbạn sẽ tự động đầu hàng . (Đây là một sự đơn giản hóa, nhưng chúng ta sẽ thực hiện điều đó.) - Chỉ một tay tại một thời điểm có thể cử chỉ
B.
Một loạt các cử chỉ được thực hiện bởi cùng một bàn tay có thể tạo ra một câu thần chú, trong đó mỗi phép được gắn với một chuỗi cụ thể. Các chuỗi này có thể trùng nhau, nhưng mỗi cử chỉ chỉ có thể được sử dụng làm cử chỉ cuối cùng của một câu thần chú (vì vậy bạn có thể tạo tối đa hai phép trong một lượt). Một số phép thuật yêu cầu một cử chỉ được thực hiện bằng cả hai tay cùng một lúc.
Nhiệm vụ của bạn là, đưa ra một danh sách các cử chỉ cho mỗi tay, để xác định phép thuật nào có thể được sử dụng trong lượt hiện tại. Đối với mỗi tay, chữ cái cuối cùng trong danh sách đại diện cho cử chỉ được chọn cho lượt hiện tại.
Dưới đây là danh sách các chuỗi cử chỉ. Chữ in hoa đề cập đến một cử chỉ được thực hiện bởi một tay, các chữ cái viết thường đề cập đến một cử chỉ được thực hiện bằng cả hai tay.
B Stab
cDPW Dispel magic
cSWWS Summon elemental
cw Magic mirror
DFFDD Lightning bolt
DFPW Cure heavy wounds
DFW Cure light wounds
DPP Amnesia
DSF Confusion
DSFFFc Disease
DWFFd Blindness
DWSSSP Delayed effect
DWWFWc Raise dead
DWWFWD Poison
FFF Paralysis
FPSFW Summon troll
FSSDD Fireball
P Shield
p Surrender
PDWP Remove enchantment
PPws Invisibility
PSDD Charm monster
PSDF Charm person
PSFW Summon ogre
PWPFSSSD Finger of death
PWPWWc Haste
SD Missile
SFW Summon goblin
SPF Antispell
SPFPSDW Permanency
SPPc Time stop
SSFP Resist cold
SWD Fear
SWWc Fire storm
WDDc Lightning bolt
WFP Cause light wounds
WFPSFW Summon giant
WPFD Cause heavy wounds
WPP Counterspell
WSSc Ice storm
WWFP Resist heat
WWP Protection from evil
WWS Counterspell
Vâng, Lightning boltvà Counterspellcó hai trình tự khác nhau mỗi.
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào ở bất kỳ định dạng chuỗi hoặc danh sách thuận tiện nào, thông qua STDIN, đối số dòng lệnh hoặc đối số hàm, miễn là nó không được xử lý trước. Bạn có thể xuất các cặp phép thuật thông qua giá trị trả về hoặc bằng cách in ra STDOUT. Một lần nữa, bạn có thể sử dụng bất kỳ danh sách chuỗi hoặc định dạng chuỗi thuận tiện, miễn là đầu ra không rõ ràng.
Bạn có thể cho rằng các chuỗi cho tay trái và tay phải có cùng độ dài và chúng hợp lệ (đặc biệt, Bsẽ không bao giờ được thực hiện bằng hai tay cùng một lúc). Lưu ý rằng đầu vào sẽ chỉ chứa chữ in hoa. Chữ in thường chỉ được sử dụng trong danh sách trên để chỉ ra rằng cả hai tay cần thực hiện cùng một cử chỉ (chữ hoa).
Đối với các phép thuật kết thúc bằng cử chỉ hai tay, bạn chỉ nên xuất một phép. Nếu một tay không thể thực hiện một câu thần chú, điều này cần được chỉ định bằng một chuỗi chỉ chứa dấu gạch nối , -.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
Ví dụ
Mỗi ví dụ bao gồm ba dòng: trình tự bên trái, trình tự bên phải (cả hai đầu vào; cử chỉ bên phải nhất là lần gần đây nhất) và danh sách tất cả các kết hợp chính tả có thể (đầu ra).
WFP
WWS
[["Cause light wounds","Counterspell"],["Shield","Counterspell"]]
SD
BB
[["Missile","Stab"]]
WWP
WPP
[["Surrender"]]
DFW
CCW
[["Cure light wounds","-"]]
FFW
WWF
[["-","-"]]
DCW
CCW
[["Magic mirror"]]
WFPSFW
PPDDPP
[["Summon goblin","Shield"],["Summon ogre","Shield"],["Summon troll","Shield"],
["Summon giant","Shield"],["Summon goblin","Amnesia"],["Summon ogre","Amnesia"],
["Summon troll","Amnesia"],["Summon giant","Amnesia"]]
BSWWS
CSWWS
[["Counterspell","Counterspell"]]
CSWWS
CSWWS
[["Counterspell","Counterspell"],["Counterspell","Summon elemental"],
["Summon elemental","Counterspell"],["Summon elemental","Summon elemental"]]
PWPWWC
BBSPPC
[["Haste"],["Time stop"]]