問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
(はじめに)
問題 10 のスート縛りと同様に数字縛りも存在します。
数字縛りとは、場に出されているカードよりもちょうど差が 1 のカードが出されるとそれ以降は差が 1 のカードしか出せなくなります。JOKER は 2 の後のみ出すことが出来ます。
では、実際にやってみましょう。
(問題)
現在場に出されている一番上のカード C とイレブンバックが起こったかのフラグ F_1 と数字縛りが起こったかのフラグ F_2 と A 枚の手札 T_1,T_2,...,T_A が与えられます。F_1 は True なら場に J が出たことを意味し、False なら場に J が出ていないことを意味します。また F_2 は True なら数字縛りであることを意味し、False なら数字縛りでないことを意味します。手札の中で出せるカードを全部出力してください。ただし、C の数字は 8,JOKER でないものとします。
C
F_1 F_2
A
T_1 T_2 ... T_A
出せるカードを q 枚としたとき答えを q + 1 行で出力してください。
1 行目には整数 q を出力してください。1 + i (1 ≦ i ≦ q) 行目には該当するトランプを出力してください。
ただし、出力する順番は BJOKER, RJOKER がある場合にはこの順番でまず出力し、そのあとはスートが強い順 (S > H > D > C) で、スートが同じ場合には数字が強い順 (2 > A > K > Q > ... > 4 > 3、イレブンバック中ならばこの逆順) で出力してください。
すべてのテストケースにおいて、以下の条件をみたします。
True か FalseTrue のとき、C の数字は 3,4,5,6,7,8,9,10,J のいずれかFalse のとき、C の数字は J ではないTrue のとき、C の数字は 3 ではないC7
False True
8
H7 C9 D10 S2 D2 S8 H5 BJOKER
1
S8
D9
True True
7
DK DQ D7 D8 D10 RJOKER CK
1
D8