PG BATTLE 2023 「大学&大学院、高専、専門学校の部」優勝者である、東京工業大学『tonosama』チームの皆さまにインタビューを行いました!
プログラミングを始めたきっかけやPG BATTLE参加の経緯、コンテスト当日の様子などお伺いしましたので、是非ご覧下さい!
●PG BATTLE 2023 ホームページ
https://products.sint.co.jp/pg_battle_2023
●PG BATTLE 2023 X(旧Twitter)まとめ
https://togetter.com/li/2256146
東京工業大学『tonosama』チームのご紹介
※東京工業大学正門の前で、金、銀、銅の3つのトロフィーを持った『tonosama』の3名さま。真冬の寒風吹きすさぶ中、頑張って撮影に応じてくれました!
(左) 東京工業大学 情報理工学院 数理・計算科学系4年 山縣龍人氏:せんべい担当
(中) 東京工業大学 情報理工学院 数理・計算科学系
数理・計算科学コース修士1年 木ノ下恭範氏:かつおぶし担当
(右) 東京工業大学 情報理工学院 情報工学系4年 兼下航輔氏:ましゅまろ担当
『tonosama』チームはPG BATTLE 2023の「大学&大学院、高専、専門学校の部」115チームの中で、見事1位を勝ち取られました。2021年は3位、そして2022年はわずか90秒差で優勝を逃し2位でしたが、ついに2023年の今回は満を持して優勝されました。合計点:280点/280点、タイム:60分02秒/180分※という好記録は、全361チームの中でも1位という大変素晴らしい結果となっております。
(※PG BATTLE 2023は、「せんべいの4問目の得点」および「せんべいの解答時間」が順位集計の対象外のため、満点は280点、合計解答時間は180分となっております。詳細はこちら)
インタビュー:PG BATTLE 優勝までの道のり
PG BATTLE 2023の優勝おめでとうございます!参加の経緯を教えてください。
(山縣) 初回の2019年の時は、X(旧Twitter)の競技プログラミング(以下競プロ)のコミュニティでPG BATTLEを知り、出てみようかなと思って参加したのがきっかけです。そこから毎年参加しています。『tonosama』としては2021年からの参加ですが、当時のましゅまろ担当が卒業したので2022年に新しく兼下さんを迎え、そこから現メンバーで参加しています。
(木ノ下) 私は「あの人をどうやって外すか後で相談しようね」の4コマ漫画をよく覚えているので、それがPG BATTLEを知ったきっかけかもしれません。(一同笑)PG BATTLEには2021から参加しています。
プログラミングや競プロをはじめたきっかけは?
(兼下) 小学生のころから算数や数学が好きで、小2で算数オリンピックに参加しました。高校生の時に数学オリンピックに出たのですが、結果は散々でした。その時の入賞者のコメントで彼らが情報オリンピックに出ていることを知り、数学が強くなるには情報オリンピックが関係しているんだなと思いました。大学入学後は競技数学の場があまりないことが分かり、大学時代に打ち込める何かを見つけたかったのに目標を作りづらくなってしまって・・・。そんな時にAtCoderの存在を知りました。AtCoderにはレートがあって目標が作りやすいし、CODE FESTIVALのような大きなコンテストもあるので、それを目標に頑張れるなと思いました。大学入学時にちょうどパソコンが手に入り、未練もあったので競プロを始めました。
(山縣) 算数や数学の関わりでいうと、小さい頃に親から子供用の数学パズルをもらったのが最初だったと思います。小5の時にジュニア算数オリンピックの本選に出場したのですが自分には合わないなと感じ、競技数学への参加はその程度でした。競プロを始めたのは高1の夏あたりです。プログラミングをやってみたいなと思っていた時、情報の先生から情報オリンピックに出てみませんか?と声を掛けてもらって、試しに問題を解いたら面白くて、その冬にAtCoderを始めました。そこからどんどんハマっていきましたね。
(記者) 子供のころにパソコンが身近にあったのですか?
(山縣) 3歳のころからパソコンを触っていて、その時は起動と終了くらいでしたが。
(記者) 3歳!?すごいですね!
(木ノ下) 小学校低学年のころから算数がすごく好きでした。ですが、競技数学は全然やっていませんでした。算数オリンピックや数学オリンピックの名前は聞いたことがあっても、雲の上のような存在に感じていたのでノータッチでしたね。高2の夏に友達から、Supercomputing Programming Contestに誘われて参加しました。
(記者) どういうコンテストなのですか?
(木ノ下) 東京工業大学と大阪大学が主催の3日間に渡るプログラミングコンテストです。期間中はホテルに泊まるのですが、朝、東工大に行って、パソコンルームでひたすらプログラムを書いてスコアを競いました。今のスーパーコンピュータは富岳ですが、当時はTSUBAMEでした。
(記者) 3日間ずっと?まるで合宿みたいですね。
(木ノ下) 出場にはパートナーが必要で、当時数学でブイブイ言わせていた私に、友達が声をかけてくれたので参加しました。(一同笑)それが競プロを始めたきっかけです。そこからどんどんハマって、高3のころには完全にどハマりしていました。
PG BATTLEの担当難易度はどのように決めましたか?
(兼下) 私は途中から参加したのと、出来も一番下なので・・・。
(山縣) AtCoderのレートも3人ともだいたい同じなので、出来は変わらないよ。(笑)
(記者) 現在のレートはどれくらいですか?
(木ノ下) 全員3,000~3,200の赤色です。
(記者) す、すごいですね・・・。
(兼下) 知識は木ノ下さんが一番ありそうですよね。
(木ノ下) 私は難しくて変な知識が必要な問題を解くのが得意なので、かつおぶしを担当させてもらっています。逆に実装が遅くて、簡単めの問題を素早く解くのが苦手なんですよね。兼下さんは速解きが得意なので、ましゅまろを担当してもらいました。
PG BATTLE当日までの練習や対策はありましたか?
(兼下) 初参加の2022年は、ましゅまろの過去問を全て解きました。今年はシステムのチェックをしたぐらいです。普段からABC(AtCoder Beginner Contest)に出ているので、大丈夫だと思っていました。
(山縣) 私は今回で5回目なのでシステムについては問題なかったです。難しいのは、一発勝負ということなんですよね。今回は確か「優勝は気にせず普段通りで。速度重視にして正解していたらいいな」という方針だったので、そのようにしました。
(木ノ下) 私が決めた方針なのですが、PG BATTLEの戦略は大きく分けて、「速度重視」か「安定重視」かの2つあると思っています。つまり一発勝負なので、正解していることを祈ってさっさと提出する方法か、手元でテストコードを書いて念入りに確認してから提出する方法。私はテストコードを書いていると時間がかかって大変なことになってしまうし、面倒くさいという思いもあり、テストなしで出たこと勝負でやってしまおうということにしました。
(山縣) 私もテストコードはあまり書いた覚えがないです。過去のPG BATTLEでは、テストコードまでは書かず、丁寧にいろんなコーナーケースに注意しながら、いつもより時間をかけて実装していました。でも今回はそれもあまりせず、普段通りのAtCoderと同じように解きました。
(記者) 昨年は惜しくも90秒差で準優勝でしたが、今回優勝は意識されていましたか?
(木ノ下) コンテスト前は意識していませんでした。コンテスト後は、速度はしっかり取ったつもりだったし、点数も満点だったので大丈夫だろうと思っていたら、かつおぶしで1位だった人が異常に速いスピードで解いていたので、総合優勝している自信はなかったです。
(山縣) 優勝できてたらいいなくらいに思っていました。
(兼下) 優勝は半ば運みたいなところもあるので。3人全員がバグを出さずに満点を取るというのは割と難しいと思いますし、2年連続で上手くいったのはなかなかレアだったなと。優勝を意識して速度を出しすぎてバグってもダメなので・・・。
(木ノ下) PG BATTLEの上位は狙って取れるものじゃないからね。
(兼下) なので、普段通りやって満点が取れたらOKという感じでした。
(記者) ということは、結果発表があるまでは優勝かどうか分からなかったんですね。
(全員) はい、分かりませんでした。
(兼下) でも個人的には、木ノ下さんが異常な速度で解いていたので、たぶん大丈夫だろうなと思っていました。
(山縣) かつおぶしで32分は速いよね。
(木ノ下) でも1位は26分なんで。1位の速さはどうかしてますね。(笑)
言語はあらかじめ決めていますか?問題を見て変えますか?
(兼下) 基本的にはC++で、Pythonもそれなりに使えるようにしています。ましゅまろの3問目で一瞬魔が差したのですが、機能をあまり知らなかったのでC++で適当に書いたのが功を奏しました。普通だったらPythonで解くのが楽な問題みたいですが、今回はダメだったらしいので。定数倍の処理があって速度が遅いコードでも、一応正解できるようなものはC++を使った方がいいし、みんな使っているので情報が沢山あるんですよね。だから他の言語は使わないです。Pythonをたまに使うくらいですね。
(山縣) JOI(日本情報オリンピック)出身なのでC++から始めました。大学生になってABCの作問をするようになり、解説に毎回C++とPythonの両方のコードを載せることにして、ひたすらPythonで解いていたら、かなり書けるようになりました。なのでPythonの方が有利な問題ではPythonを使うことがあります。
(木ノ下) 私は完全にC++です。高校生の時に誘ってくれたJOI出身の友人からC++を教わって、そこからずっとC++でやってきたので、Pythonは全然使えなくて選択肢にないですね。一時期Rustを使っていたこともありますが、めったに使わないです。
(記者) みなさんC++がベースなんですね。セガのゲームもほぼC++で書いてるそうですね。
(兼下) 「龍が如く」ですよね、X(旧Twitter)で出ていました。C++は実行速度が速いからですかね。
(木ノ下) ゲームプログラミングってもっと高級な言語を使っていると思っていたので、びっくりしました。
印象に残った問題はありましたか?
(兼下) ましゅまろの3問目です。C++で書くと決めていたので解いている時は印象に残っていなかったですが、終わった後にX(旧Twitter)で阿鼻叫喚している人がいたので印象に残っています。(一同笑) 昨年は、ましゅまろ4問目の解法を思いつくのが遅くて、そこで90秒時間を取られて負けてしまったので、少し印象に残っています。ましゅまろは特に感動する要素はあまりないですが(笑)、そういった自分ができなかったり、罠があったりした問題は印象に残りますね。今回ましゅまろで個人優勝した方に話を聞いたら、3問目のような問題用のライブラリを持っていたと言っていたので、そういう事も速度に効いてくるんだなと思いました。
(山縣) 4問目が結構難しかったです。DPをして細かいところを考慮するのが大変そうな問題でした。1か所バクらせた箇所を直しても合わなくて考えこんでいたのですが、不運な事故ということで・・・(笑)
(記者) 恐縮です・・・。答えが合わない時に、問題の方が間違っていると思えるタイミングはあるのでしょうか?
(山縣) 4問目については、もしかしたら抜け落ちている場合分けみたいなものが、めちゃくちゃ見つかりにくいケースであるかもしれないなと感じました。まず自分のコードが正しいかをちゃんとチェックして、問題もちゃんと読んで、コードも全部合ってそうだなという確信を持って、そこでようやくテストケースを疑えるので・・・。今回は問題自体が難しかったので、そこまでには至りませんでした。
(木ノ下) 1問目の3次方程式の問題は、かなり手こずりました。この手の方程式を解くタイプの問題は、小数点誤差がすごいことになるとか、変なコーナーケースが沢山あると相場が決まっていて、だいぶ疑心暗鬼になる問題でした。最初に二分探索で組んでいったのですが、コーナーケースが合わずに不安になってしまいました。結局シンプルに解けるみたいですが、細かいところで妙に不安になる面白い問題でした。
チーム名『tonosama』の由来は?
(木ノ下) 私の東工大の同級生で、競プロサークルの班長みたいなことを長らく務めていた友人が、2021年当時のメンバーのハンドルネーム「goodbaton」、私の「noshi91」、山縣さんの「tatyam」の一部をくっつけて『tomosama』と名付けてくれました。2022年からましゅまろは兼下さんに変わったのですが、ハンドルネームが「potato167 」でそのまま対応できたので、続行しています。
(記者) 名付けたチームが世界に羽ばたいていて、ご友人も嬉しいでしょうね!
結果発表はリアルタイムでご覧になりましたか?優勝と分かっていかがでしたか?
(兼下) 3人とも、毎週土曜の14時から開催されるユニバーサルカップという5時間のプログラミングコンテストに参加していたので、リアルタイムでは見れていないんですよね。ユニバーサルカップが終わって、優勝を知った時は嬉しかったです。私たちはレートは高いかもしれませんが、満点を取れるチームは他にも沢山いて、優勝できない可能性の方が高いので優勝できたのは嬉しかったです。
(木ノ下) 優勝と知って「マジ?そうなんだ!」と思いました。
(記者) 同じチームで、金、銀、銅、3つ揃っているのはみなさんが初めてです。素晴らしいです!
(木ノ下) そうですね、面白い結果になりましたね。
(記者) 2021年からひとつずつ順位を上げられての今回の優勝、私たちも大変感動しました。
(兼下) 奇跡的にイイ感じのストーリーになりました。(一同笑)
(木ノ下) 結果発表会は後から見たのですが、私の投稿(旧ツイート)が紹介されていて、「本人がリアルタイムで見てなくてすみません」と思っていました。(笑)
●PG BATTLE 2023 結果発表会
結果発表会が1週間後なのについてはどう思いますか?
(兼下) 次の日ぐらいにやってほしいです。でもそうすると、休日出勤になっちゃうんですよね。(一同笑)
(山縣) 発表会は面白いので、1週間後でもいいんじゃないでしょうかね。
(木ノ下) PG BATTLEは、コンテストと結果発表会で2回盛り上がれるから結構好きです。結果発表会まで2週間も空くといつだよってなるけど、1週間後だとギリギリセーフかなと。なので全然アリですね。
(記者) ありがとうございます。頑張ります!
ご家族やご友人から反応はありましたか?
(木ノ下) 私の家族はコンテストで勝つたびに喜んでくれるので、今回の優勝も大喜びしてくれました。特に父は「おぉ、すごい!祭りだ!」とゲン担ぎに宝くじを買ったみたいです。(一同笑)あと、ありがたいことに賞を取るたびにケーキを買ってお祝いしてくれます。家族は3位の銅と2位の銀のトロフィーを見ているので、今回の金の優勝トロフィーには喜びもひとしおという感じでした。
(兼下) 賞金が大きいので、伝えるとびっくりしていました。ただ最近は「またもらったのか」みたいな、少し飽きてきている反応になっています。
(山縣) 自分から報告はしなかったですが、私のX(旧Twitter)の投稿を見て結果を知ってくれています。
優勝賞金(Amazonギフト券24万円)はどのように使いましたか?
(兼下) 物欲があまりないので貯めていて、何かあった時に使うようにしています。例えばICPC(International Collegiate Programming Contest: 国際大学対抗プログラミングコンテスト)に参加する時はUSキーボードじゃないとだめなのですが、そういう時に躊躇なく使えるようにしています。
(山縣) Amazonの「ほしい物リスト」に入れておいた、必要なものを買うようにしています。競プロの賞金はアマギフが多く貯まっていくので、これまでにケーブルやイヤホン、ヘッドセットなどを買いました。競プロはPCだけあればできるので、お金がかからないんですよね。20万円くらい貯まった時には、そろそろ欲しいと思っていたWindowsのゲーミングPCを買いました。
(木ノ下) Amazonで買いものをする習慣が身についてないので貯まりがちですが、基本的には本を買っています。競プロで使うための専門的な数学やアルゴリズム系の高額な本はAmazonにしか売ってないので、そういう場合に使うようにしています。あと1~2年前から、フォロワーの中高生の競技プログラマーの「ほしい物リスト」を見てプレゼントをしています。私は実家暮らしでありがたいことに生活費を出してもらえているので、貯まりすぎるアマギフをどこかで使わないといけないなと思いますし、競プロで得たお金が競プロに回っていくのはいいことだと思っています。
(記者) 素晴らしくて涙が出ますね・・・。プレゼントされたフォロワーさんも嬉しくて感動するでしょうね!!
(木ノ下) みんな、お礼のコメントを送ってくれます。
優勝トロフィーはどのように保管されていますか?
(木ノ下) 3つとも私の家で保管しています。私の部屋がモノであふれているので、飾ってはいないです。(笑)
PG BATTLEに参加してよかったことや他のコンテストと比べて何か思ったことはありますか?
(木ノ下) 私が参加している中で提出前にテストするのが大事なコンテストって、今はPG BATTLEしかないのですが、再提出不可で間違えたら終わりという形式のヒリヒリした感じが結構好きです。あと、個人参加だと間違っていてもまぁいいかとなるけど、チーム戦だと緊張感がしっかり出るのでその辺もいいなと思っています。
(兼下) ICPCは失敗してもまだギリギリ取り返しがつくけど、PG BATTLEは取り返しがつかないのでそこに対するドキドキ感があります。いつ終了ボタンを押すのか、という感じで緊張感があるコンテストです。速く解くか安定をとるかの戦略性が問われる、珍しいコンテストですね。あと、企業が参加できる唯一のコンテストなのもいいし、結果発表会で面白いチーム名を取り上げてくれることがいいですね。みんな結構ふざけたチーム名を付けているので、見ていて楽しいです。
(山縣) 今回はいつも通りやって勝っていればいいかなという気持ちで参加したので、優勝できてよかったです。PG BATTLEはギャンブルっぽさがあり、気軽に楽しんでいます。
(木ノ下) 損切りで、最後の問題が難しいから解かずに提出するという現象がトップ争いでも起こったら面白いなと思います。今の難易度だと大学の部のトップ争いは満点が前提になっているので、めちゃくちゃ難しい問題を追加してトップでも解かずに提出するようになると、また違った面白いゲームになると思います。ちょっとやってみたいですね。(笑)
※東工大名物、通称「チーズケーキ」の前で
インタビュー:皆さんのこれから
将来の夢や目標を教えてください
(兼下) 今のところないんですよね・・・。ゲームを作りたいと思っていたのですが、競プロにハマったことでそう思えなくなって、仕事に関する将来の夢みたいなものがなくなってしまいました。(苦笑)
(山縣) しばらくは競技プロをやっていたいですね。競プロと仕事の両立が目標です。競プロを引退している社会人も多いですが、私は両立していきたいです。
(木ノ下) 私も競プロを続けていきたいのと、競プロ以外でも頭を使う何かを続けたいと思っています。今のところ、研究者にはならずに企業に就職する予定です。今、大学院で研究している内容が思いきり競プロみたいなものなのですが、それを企業でやるのは難しそうなので、コーディングをする人間として生きていこうと思っています。その一方で、自分の頭脳の限界まで挑むような趣味を何か1つは続けていたいと思っています。
PG BATTLE 2024の参加者にむけてメッセージをお願いします!
(兼下) 『tonosama』は、1、2、3位を全て入賞しているので、脅かす存在というか、もっといろんなチームと優勝争いができたら嬉しいです。賞金も高いし、人が多いと賑やかになるので、みんなで優勝争いをしましょう!
(山縣) アドバイスとしては、普段のABCと同じだと思うので、ひたすらそれを練習するといいかなと。間違わないことが大事なので、いつもより丁寧に解答しましょう!
(木ノ下) PG BATTLEはオンラインで結果発表会も参加必須ではなく、全体として拘束時間も短いので、気軽に参加してほしいですね。友達と参加して誰がミスしたとかワイワイやるだけでも楽しいですし、ぜひ参加してください!
PG BATTLE 2024も開催予定です。参加していただけますか?
(全員) このチームでは最後になると思いますが、参加します!
※本文中では敬称を省略させて頂きました。また、記事内容は取材当時(2024年1月)のものです。
最後に
卒業論文作成や研究等で大変お忙しい中、快くインタビューに応じてくださった『tonosama』チーム様、誠にありがとうございました。
ICPCのアジア地区大会上位入賞の常連チームでもあり、また、ICPC 2022/2023の世界大会出場が決定している3名さま。そのようなものすごく優秀な皆さまですが、プログラミングで解けない問題があるととても悔しくて、なぜ解けなかったか考え、また解けるまで問題と向き合うとおっしゃっていました。そのようにひたむきに取り組まれる皆さまだからこそ、3,000以上のレートを誇る業界一握りの赤色コーダーになれるのだと思いました。この度は、3位、2位を経ての優勝、本当におめでとうございました!
PG BATTLE 2023「大学&大学院、高専、専門学校の部」には115チーム(345名)の皆さまにご参加いただき、誠にありがとうございました!1~3位以外にも飛び賞(スポンサー賞)もございますので、プログラミングがお好きな方はぜひご参加をお待ちしております。
●PG BATTLE ホームページ
https://products.sint.co.jp/pg_battle
- カテゴリ:
- キーワード: