クエリの受け取り

GitHub last commit

概要

たとえばクエリ 1 は 1 x y,クエリ 2 は 2 x というように,クエリ毎に長さが異なるものを一括で受け取るのは難しい. しかし proconio::source::Readable を実装した列挙型 Query を用いると,以下のようにクエリを一括で受け取れる.

input! {
    q: usize,
    queries: [Query; q],
}

実装

以下は 鉄則本 A51 - Stack に対する Query の実装である. 問題文に合わせて適宜コメント部分を書き換えること.

use proconio::source::Readable;

// 👇👇👇👇👇👇👇👇👇👇👇👇 io/query 👇👇👇👇👇👇👇👇👇👇👇👇
enum Query {
    // ここを書き換える
    Q1(String),
    Q2,
    Q3,
}

impl Readable for Query {
    type Output = Query;
    fn read<R: std::io::BufRead, S: proconio::source::Source<R>>(source: &mut S) -> Self::Output {
        match u8::read(source) {
            // ここを書き換える
            1 => Query::Q1(String::read(source)),
            2 => Query::Q2,
            3 => Query::Q3,
            _ => unreachable!(),
        }
    }
}
// 👆👆👆👆👆👆👆👆👆👆👆👆 io/query 👆👆👆👆👆👆👆👆👆👆👆👆

Verified with

戻る