はむ吉(のんびり)の練習ノート

プログラミングとことばに関する話題を中心に,思いついたこと,試してみたこと,学んだことを,覚え書きを兼ねてまとめます.その際に役立った,技術書,参考書,辞書,機器などの紹介も行います.

競技くそなぞなぞ「掌」史 (A Very Brief History of Competitive Kuso Nazonazo)

競技プログラマー有志を中心に,くそなぞなぞの競技化に関する動きがあります.最近では rated コンテストの開催や,言葉遊びに特化したコンテストプラットフォームの開発および公開など,ますます活発化しています.そこで,この記事では,競技くそなぞなぞにまつわる歴史を,黎明期から現在に至るまで概観します.

更新履歴

  • 2021 年 4 月 3 日:公開.

はじめに

近年,Twitter 上ではくそなぞなぞが広まりつつあります.一般のなぞなぞは,ある語句を答えとして設定し,それを隠した回りくどい問題文を提示することで,答えの語句を当てさせるというものです.くそなぞなぞもそのような言葉遊びですが,なぜか「くそ」という語がついています.おそらくは,ぎなた読み,しょうもない駄洒落や,ただなんとなく語感が似ているだけの語が問題を解く鍵になっていたり,果てはとにかく理不尽であったり*1するのが,「くそ」たる所以でしょう.「くそなぞなぞ」は「くそみたいに面白いなぞなぞ」のことだという言説もあり,もはや「くそなぞなぞ」の定義づけは困難になりつつあります.

競技プログラミング関連のクラスタにおいても,いつからかくそなぞなぞは親しまれるようになりました.当初は Twitter 上でくそなぞなぞを出し合うという素朴なものでしたが,後述する Kuso Nazonazo Contest を皮切りに,くそなぞなぞの競技化という活動が始まりました.今では,くそなぞなぞコンテストの rated 化や,くそなぞなぞなどの言葉遊びに最適化されたコンテスト管理サイト Sh*tforces の登場など,ますます競技らしくなっています.そこで,一度これまでに競技くそなぞなぞが歩んできた道のりをたどろうと,本稿を記した次第です.

Kuso Nazonazo Contest の誕生:競技くそなぞなぞのあけぼの

遅くとも 2016 年初めごろから,一部の競技プログラマーの間で,Twitter 上におけるくそなぞなぞの出し合いが確認されています.そのような状況の中で,正確な経緯は不明ですが,最初のくそなぞなぞコンテストとして Kuso Nazonazo Contest が 2016 年 10 月に開催されました.これが,競技くそなぞなぞの嚆矢だと考えてよいでしょう.プラットフォームとしては,有志によるコンテスト作成が可能なオンラインジャッジである HackerRank が転用されました.この時点で,言い換え方が分かるように解答する,(これは HackerRank の制約によりますが)ローマ字で解答するなどといった,基本的な様式が整っていることが見て取れます.以降のコンテストでも,後述するくそなぞなぞ AGC の時期を除いては,これが Sh*tforces 登場までの de facto standard となりました.また,競技プログラミングに倣って,各問について最初に正答した人,すなわち first accepted を発表するといった要素も,その後のコンテストに引き継がれました.ただ,このころの問題文を見ると,情報学や数学に関する一定の知識を前提としている問題*2や,複数解がありうる問題があるなど,現在とはやや傾向の異なるところもありました.Kuso Nazonazo Contest 以降も,同 0011.51.75002003 と題するコンテストが開かれました.しかし,いつしかこのような活動はフェードアウトしていきました.

くそなぞなぞ AGC の登場

そのような状況のなか,2019 年に登場したくそなぞなぞコンテストとして,くそなぞなぞ AGC (KGC) があり,リハーサルを除いて 3 回が開催されました.これは,HackerRank といったシステムによる自動化を用いず,Twitter 上においてリプライを募り,人力 (!) でジャッジを行うというものでした.そのため,主に first accepted を競うものとなっていました.別解や非想定解に関する柔軟な処理に加え,何よりもお祭りのような楽しさを生み出すことを重視して,このような方式を採用したと考えられます.このコンテストで特筆すべきことは,公式解説でした.プログラミングコンテストのそれに倣って,LaTeX で作成されたと思しき解説が,コンテストの終了後に公開され,復習に資するようになっていました*3.このことは,くそなぞなぞに公式,非公式を問わず解説を付けるという概念を広めるきっかけになったと考えられます.また,字謎や SlideShare などの外部のコンテンツを用いたなぞなぞなど,新機軸の問題も多数出されたのも特徴的でした.

Rated コンテストの登場と競技言語遊戯プラットフォームの構築

KGC の後,しばらくして登場し,2020 年から現在まで続いているのが くそなぞなぞ Beginner Contest とそれに類するコンテストです.これは,Kuso Nazonazo Contest と同様に,(当初は) HackerRank をプラットフォームとして開催されました.重要なのは,これは rated であるということした.主要な競技プログラミングサイトに倣い,参加者の実力がレーティングとして可視化されたのです.これに関して,管理者 (admin) を置くなど,問題の質を担保する取り組みも進められました.また,一部の回では解説放送も実施される,参加者自身による解説記事や,辞書の利用などのテクニックに関する記事が増加する,後述の Sh*tforces 登場後は有志のコンテストも盛んに開催されるなど,ますますくそなぞなぞの競技化が進みました.

くそなぞなぞ Beginner Contest が好評を博す中で,このようなコンテストの開催に利用できる新たなプラットフォームが求められるようになりました.上述のように,くそなぞなぞコンテストの多くは HackerRank を転用して実施されてきました.しかし,非 ASCII 文字を解答に含められない,提出の操作が煩雑である,非想定解の扱いやコンテストの成績管理が難しいといった問題が,改めてクローズアップされるようになりました.このような状況のもと,Sh*tforces が開発され,2020 年末に公開されました.これは,言葉遊びに特化したコンテストプラットフォームとして,新規に構築されたものであり,オープン当初から関心を集めました.ひらがななどの非 ASCII 文字の入力が可能で,提出も素早く行えるなど,上述の問題点を解決するものでした.その後,このプラットフォーム上で,有志のくそなぞなぞコンテストのほか,同様に競技プログラマーを中心に盛り上がっている ソートなぞなぞのコンテストが多数開催されています.くそなぞなぞ Beginner Contest 関連も,Good Bye HackerRank Contest をもって HackerRank 上での開催を終了し,くそなぞなぞ Beginner Contest 013 が Sh*tforces における初めての rated コンテストとして開かれました.今後も,動きに目が離せません.

おわりに

ここまで述べてきたように,約 4 年半前に産声を上げた競技くそなぞなぞは,今や競技プログラマー有志を中心に広く親しまれているほか,新規プラットフォームの開発,辞書への関心の深まりなどの波及効果をもたらしました.その一方で,くそなぞなぞの競技化が進むにつれ,換言の正当性や「辞書的意味」との整合性が重視されるという風潮が広まっているのも無視できません.ただ,それも普通のくそなぞなぞと競技くそなぞなぞとの違いをよく認識していれば,さしたる問題はないと思われます.何はともあれ,競技くそなぞなぞが,これからも末永く続くことを願います.

*1:たとえば,「パンはパンでも食べられないパンってな~んだ」に,「傷んだパン」とか「パンの食品サンプル」などと答えさせる類.

*2:No.3017 エスパー - yukicoder など,くそなぞなぞと(競技)プログラミングを組み合わせた問題も出されました.

*3:Kuso Nazonazo Contest 系のコンテストの一部でも,HackerRank の機能を用いて解説がなされていましたが,このようなまとまった文書としてのものではありませんでした.