Permainan Waving Tangan adalah suatu tempat antara pena dan kertas Magic: Gathering dan sangat rumit batu gunting kertas. Setiap belokan Anda menuliskan satu dari delapan gerakan untuk masing-masing tangan:
F
inger menggoyangkan- menawarkan
P
alm S
tidur sebentarW
aveD
igit menunjukC
putaran- staf
B
N
othing
Ada beberapa aturan penting yang diutamakan daripada yang lain:
- Jika kedua tangan memberi isyarat
P
Anda secara otomatis menyerah . (Ini adalah penyederhanaan, tapi kami akan melakukannya.) - Hanya satu tangan pada satu waktu yang bisa memberi isyarat
B
.
Serangkaian gerakan yang dilakukan oleh tangan yang sama dapat membuat mantra, di mana masing-masing mantra terikat pada satu urutan tertentu. Urutan ini dapat tumpang tindih, tetapi setiap gerakan hanya dapat digunakan sebagai gerakan terakhir dari satu mantra (sehingga Anda dapat membuat hingga dua mantra dalam satu putaran). Beberapa mantra membutuhkan gerakan yang harus dilakukan dengan kedua tangan secara bersamaan.
Tugas Anda adalah, diberikan daftar gerakan untuk masing-masing tangan, untuk menentukan mantra mana yang bisa dilemparkan pada giliran saat ini. Untuk masing-masing tangan, huruf terakhir dalam daftar mewakili gerakan yang dipilih untuk giliran saat ini.
Berikut adalah daftar urutan gerakan. Huruf besar mengacu pada gerakan yang dilakukan oleh satu tangan, sedangkan huruf kecil mengacu pada gerakan yang dilakukan dengan kedua tangan.
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
Ya, Lightning bolt
dan Counterspell
masing-masing memiliki dua urutan yang berbeda.
Anda dapat menulis sebuah program atau fungsi, mengambil input dalam daftar apa pun atau format string, melalui STDIN, argumen baris perintah atau argumen fungsi, selama itu tidak diproses sebelumnya. Anda dapat mengeluarkan pasangan mantra melalui nilai balik atau dengan mencetak ke STDOUT. Sekali lagi, Anda dapat menggunakan format string atau daftar yang mudah digunakan, selama outputnya tidak ambigu.
Anda dapat mengasumsikan bahwa urutan untuk tangan kiri dan kanan sama, dan bahwa mereka valid (khususnya, B
tidak akan pernah dilakukan oleh dua tangan pada saat yang sama). Perhatikan bahwa input hanya akan berisi huruf besar. Huruf kecil hanya digunakan dalam daftar di atas untuk menunjukkan bahwa kedua tangan perlu melakukan gerakan (huruf besar) yang sama.
Untuk mantra yang berakhir dengan gerakan dua tangan, Anda harus mengeluarkan satu mantra. Jika satu tangan tidak dapat melakukan mantra, ini perlu ditunjukkan oleh string yang hanya berisi tanda hubung -
,.
Ini kode golf, jadi jawaban tersingkat (dalam byte) menang.
Contohnya
Setiap contoh terdiri dari tiga baris: urutan tangan kiri, urutan tangan kanan (kedua input; gerakan paling kanan adalah yang terbaru), dan daftar semua kombinasi mantra yang mungkin (output).
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"]]