CODE FESTIVAL 2017 Final A - AKIBA

提出へのリンク

A を挿入すべき位置を予め調べて決め打ちして挿入し、最終的にできた文字列が AKIHABARA と一致するか見るコードにした。

余り綺麗ではなく、実際解説を読むと AKIHABARA から A を抜いた文字列を全列挙してどれかと一致するか見ればよい。この実装としては特にはむこさんの提出が素晴らしく、簡潔で読みやすくバグりにくいと思う。以下に引用する。

string s; cin >> s;
for (auto a : {"", "A"}) for (auto b : {"", "A"}) for (auto c : {"", "A"}) for (auto d : {"", "A"})  {
    if (s == a + (string)"KIH" + b + (string)"B" + c + (string)"R" + d) {
        cout << "YES" <<endl;
        return 0;
    } 
}
cout << "NO"<<endl;

上記 range-for の中にある initializer list は型どうなるんだろうと思ったら std::initializer_list<string> になるらしい。参考:

cpprefjp.github.io


最近イカはちょびちょびやってます。ガチホコが B+ から A- になりました。あとガチヤグラもいつのまにか A- から A になってた。ガチアサリは未だに B+ です。