大富豪メニューのサムネイル
(問題 11)数字縛り Scala編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

(はじめに)

問題 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


1 行目には 1 つの文字列 C が与えられます。

2 行目には 2 つの文字列 F_1,F_2 が与えられます。

3 行目には 1 つの整数 A が与えられます。

4 行目には A 個の文字列 T_1,T_2,...,T_A が与えられます。

入力は 4 行となり、末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

出せるカードを q 枚としたとき答えを q + 1 行で出力してください。

1 行目には整数 q を出力してください。1 + i (1 ≦ i ≦ q) 行目には該当するトランプを出力してください。

ただし、出力する順番は BJOKER, RJOKER がある場合にはこの順番でまず出力し、そのあとはスートが強い順 (S > H > D > C) で、スートが同じ場合には数字が強い順 (2 > A > K > Q > ... > 4 > 3、イレブンバック中ならばこの逆順) で出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。

  • C はトランプのカードで数字は 8,JOKER ではない


  • F_1,F_2 は TrueFalse


  • F_1 が True のとき、C の数字は 3,4,5,6,7,8,9,10,J のいずれか


  • F_1 が False のとき、C の数字は J ではない


  • F_2 が True のとき、C の数字は 3 ではない


  • 1 ≦ A ≦ 26


  • T_i (1 ≦ i ≦ N, 1 ≦ j ≦ A_i) はトランプのカードで同じカードは現れないかつ C とすべて異なる
  • 入力例1

    C7
    False True
    8
    H7 C9 D10 S2 D2 S8 H5 BJOKER

    出力例1

    1
    S8

    入力例2

    D9
    True True
    7
    DK DQ D7 D8 D10 RJOKER CK

    出力例2

    1
    D8

    問題一覧へ戻る

    1. paizaラーニングトップ
    2. レベルアップ問題集
    3. 大富豪メニュー(言語選択)
    4. 問題一覧 Scala編
    5. (問題 11)数字縛り Scala編
    ページの先頭へ戻る