問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
(はじめに)
次は8切りです。
8切りとは、場に 8 のカードを出すことによって、場のカードのリセットを行うことが出来ます。リセットを行った後はまた自分が好きなカードを場に出すことが出来ます。ここで 8 を出した場合にはまた新たにリセット後にカードを出さなければいけません。
実際にやってみましょう。
(問題)
現在場に出されている一番上のカード C と A 枚の手札 T_1, T_2, ..., T_A が与えられます。8切りが出来るか判定を行ってください。8切りが出来る場合上記のルールにおいてリセット後に出すカードを出力してください。ただし、C の数字は 8,J,JOKER でなく、なおかつ、J は場に出されていないものとします。
C
A
T_1 T_2 ... T_A
8切りが出来ない場合は 1 行目に No を出力してください。
8切りが出来る場合は 1 行目に Yes を出力し、2 行目に8切りするために使うカード、3 行目にリセット後に出すカードを出力してください。ただし、リセット後に出したカードが 8 である場合は、もう一枚リセット後に出すカードを出力してください。
答えが Yes の場合、2 行目に出力されたカードは手札に入っており、場のカードよりも強く、数字が 8 である場合かつ、3 行目以降に出力されたカードは手札に入っており、それぞれ違うカードで、最後以外に出力されたカードが 8 かつ最後に出力したカードは数字が8でないか、手札のカードをすべて出した場合にのみ正解と判定されます。
すべてのテストケースにおいて、以下の条件をみたします。
C7
8
H7 C9 D10 S2 D2 S8 H5 BJOKER
Yes
S8
H5
CK
5
DK DQ D7 D8 D10
No