#はじめに
記事を読み始めてださってありがとうございます。
この記事では、2021 年 3 月 31 日に yukicoder で開催させていただいた新入生プログラミングコンテスト ( 以下 新プロコンテスト ) の運営を他の新入生プログラミング鯖1 ( 以下 新プロ鯖 ) の有志の人とともにやった体験記です。
公開が遅れてしまいすみません。
コンテストの参加記に比べて、運営記というのはあまりない気がするので、これからコンテスト運営をする際に少しでも参考になればと思います。
#軽く自己紹介
初めまして。
この春中二になる Noboru です。
競技プログラミングを Noboru2020 という名前でやっていて、現在 AtCoder 緑コーダーです。
この記事はコンテストが始まる前に書き始めました。
今はただ炎上しないでね、と祈るのみです、、、 (フラグ建設おめでとう)
#企画が上がる
上の写真の会話が出てきて、一気に盛り上がりました。
即日コンテストで作問作業に関わる人用の discord サーバーが立ったので参加しました。
#問題を募集する
作問作業は、各々が作った問題のタイトル名をチャンネル名にして、そこで問題を送って議論する、という流れになりました。
問題を出す順番に並べたりする際にもとっても役立ったので、この方式はめちゃくちゃお勧めです。
各々がチャンネルを作り、そこに作った問題を送っていきました。僕は前から温めておいた スマホを落としたいだけなのに 一問だけ出題する予定だったのですが、、、
という流れで結局もう一問、 新入生プログラミング鯖 を即興で作りました。
あまりに大量に問題が投げられてくるので、二日に分ける案がここらへんで出てきました。
ここにきてテスターをどうしようという問題が出てきました。
#テスターを決める
とりあえず MtSaka 君が物理好きさんを呼んできてくれたので、物理好きさんには何問かテスターをお願いしました。
このとき MtSaka 君が呼んでくれたのは後々すごい助かりました。
その後も誰に頼もうか議論していたものの、時間がかかりすぎということで自分たちでやる事になりました。 ( 後々これが事件の元になるとは、、、 )
簡単な問題は MtSaka 君とかもテスターしてました。
僕はしてません ( 炎上が怖かったため )
#日程調整
日程をどうしようかというのは前から話し合っていました。
できれば三月中に二日間開催したかったですが、問題の都合上三月中に二日間行うのは難しいのでは?という話が出ていました。
もっと余裕をもって決めてやればよかったのですが、「新入生」である三月中にやっておきたい、という人も多く、結局三月三十一日に昼夜で分けて開催することになりました。
yukicoder さんにはギリギリの連絡になってしまってものすごく申し訳ないです。
あと、テスターの配分がここらへんで決まっていきました。
しおむすび君がかなりの数のテスターを受け持っていて、これがあとで事件を引き起こさないといいですが、、、 (特大フラグ)
#自分の作問作業
さて、タイトルにもある通り作問についてちょっと話そうと思います。
とりあえず discord サーバーを二問分立てた後、 yukicoder に移植する作業をしました。
僕は文化祭でほとんど形だけ web 班に入っていたのですが、 HTML についての知識がゼロだったので、そこから始めました。
最低限、リストと改行と MathJax が使えればいける気がします。 (は?)
よい子はマネしない方がいいです。
ある程度移植が済んだらテスターを募集しました。
##新入生プログラミング鯖の作問作業
こっちは MtSaka 君がテスターを担当してくれました。
本当にありがとうございます。
こっちはテストケース 10 個で済んだので、とりあえず自分で作りました。
事故も起こりにくそうですが、一応怖いので入力違反がないか何度も確認しました。
##スマホを落としたいだけなのにの作問作業
こっちはしおむすび君プラス途中から物理好きさんにテスターを頼みました。
最初はサンプルのテストケースしか作っていない状態でしおむすびに投げたので、テストケースを作る作ると言っていたものの、毎回三歩あるくと忘れて結局しおむすびに作ってもらいました。
本当にありがとうございます。
時は流れ、コンテスト前日 (は?)
元々は「割れない卵」というタイトルだったのですが、物理好きさんから「ググれば出てくる」と言われてしまい、さらに
さすがにこれはまずいと思い、急遽卵からスマホに変更しました。
これは英断だったと思います。
これで変更してなくってたくさんググられたらと思うと恐ろしいです。
#コンテスト当日の話
##昼の部まで
コンテストは昼の部と夜の部に分かれていて、昼の部が午後二時からなのでとりあえずそこまでは自由時間のはずです。
午前十一時頃まで用事があり、そこから昼食を自炊しました。
正午ごろに返さなければいけない本があることに気づき ( え? ) アイスの買い出しのついでに図書館に行きます。
コンテスト四十分前に家に到着、急いでアイスを冷凍庫に入れます (おい)
その後、 PC を起動し、作問の最終チェックをしました。
そんなこんなでコンテストがスタート、とりあえず discord のボイスチャンネルに集まって実況?的なことをします。
FA が出ただの出てないだの騒ぎましたが、終了三十分前くらいから静かになっちゃいました。
質問が 集団登校に一個来たときはビビりましたが、それ以外は事故なく終わった ( かのように ) 見えました。
反省としては、難易度調整をミスったかなーという点が挙げられますがそれ以外は大丈夫だと思っていました。
##事件発覚
ところが、夜の部開始約一時間前から Twitter で「昼の部 E 問題で制約違反がある」とのツイートを見ました。
急いで確認すると本当に違反してます。
とりあえず Twitter と discord の 競プロ er 集会所で謝罪をします。
すぐにテストケースを修正しました。
この事故の主な原因は、事前のチェックが甘かったこと、さらに根本的な原因は writer のチェック力不足と テスターのしおむすびが他の問題のテスターもどんどん請け負って、それに伴い僕らもどんどん任せた結果、しおむすび過労死キャンペーンになってしまったことです。
これは完全に運営で連帯責任です。
このケースでずっと WA が取れなかったという方もいたので、本当に申し訳ないです。
とにかく、今我々運営陣にできることは夜の部で事故を起こさずにコンテストを楽しんでもらうことだと気持ちを切り替え、ラストスパートでチェックをします。
##夜の部
というわけで最終チェックも終わり、例のごとくボイスチャンネルに集まって実況をします。
A 問題よりも早く E 問題の AC が出たのはものすごく驚きました。
多分昼の部の問題が関係しているのでしょうね
さて、自分の作った問題の話にはなりますが、スマホを落としたいだけなのにはなんと三分足らずで AC されてしまいました。
個人的にはもっとみんな詰まると思ったのに、、、
まぁ元ネタ知ってる人に相当有利になってしまったかもしれない、とは思いました。
その後、この問題はかなりの人数に解かれるわけですが、はまる人は嘘解法でどんどんはまっていたので、ある意味予想通りでした。
そしてこれは開始してしばらくして気づいたのですが、難易度傾斜がきれいになっていました!
昼の部で荒れていただけにとっても嬉しいです。
まぁ、これが普通だと言われてしまえばそこまでになるのですが、、、。
今回はしおむすびの作った良問がボス問になっていましたが、これはかなりこのコンテストの評判?的によかったとおっもいます。
数日前までは僕の「スマホを落としたいだけなのに」がボス問に設定されていたので「 Max of min 」をボス問に引き上げるために制約を上げたのはいい判断だったと思います。
物理好きさん、しおむすび、ありがとうございます!
そんなこんなでコンテストが終わりました。
昼の部のように炎上することもなく、問題の順番もうまくいって、夜の部はかなりいい運営をできたと思います。
#反省点まとめ
コンテストは日程を計画的に決めましょう。
告知等もしにくくなります。
テスターは一人の負担が大きくなりすぎると事故の元となります。
本人が大丈夫だと思っていても大丈夫じゃないので気を付けましょう。
HTML はしっかり使えるようにしましょう。
そうしないと僕みたいにテスターの仕事を増やしてしまいます。
チェックはしっかりとしましょう。
これは炎上したりしたときに本当に精神的にやばいのでした方がいいと思います。
#最後に
ここまで読んでくださってありがとうございます。
作問やコンテストを開くことは本当に楽しいということがわかりました。
事故に気を付けながら皆さんも作問やテスターに挑戦してみましょう!
最後にはなりましたが、コンテストを開催させていただいた yukicoder さん、運営を一緒にしてくれた運営陣の皆さん、そしてコンテストに参加してくださった皆さん、ありがとうございました!
-
2020年に中一もしくは高一の学生からなる、 discord サーバーです。普段は雑談をしたり、プログラミングについての質問をお互いにしたりしています。競技プログラミングをしている人が多いです。 ↩