読者です 読者をやめる 読者になる 読者になる

競技において最もコーディング効率を高める飲み物に関する一研究

(この記事はCompetitive Programming Advent Calendar Div2012の20日目の記事として書かれました。)

  1. Introduction
  2. Experiment
  3. Result
  4. Discussion
  5. Conclusion
  6. References

1. Introduction

みなさんは、普段競技プログラミングの大会に参加する際に、何のドリンクを飲みますか? 「俺はコーラだ!」とか「シンプルにお茶です」とか、様々な方がいらっしゃるかと思います。しかし、既にマイドリンクを決めている方は良いですが、競技プログラマの中には毎回飲み物のチョイスに困っている方もいらっしゃるのではないでしょうか…?

そこで今回、TopCoderを用いて臨床実験を行い、「どの飲み物が最も競技プログラミングの効率を上げるのか」という大きな問に一つの答えを与え、飲み物のチョイスの道標を作ってみようと考えました。

そこそこ、いや、結構長いですが是非最後までお付き合いいただけると光栄ですヽ(゚∀゚)ノ

2. Experiment

実験は以下のルールに従って行いました。

  • 実験期間は12/01から12/20。
  • 1日1つ飲み物を決めて、TopCoder SRMの過去問を解く。 
  • n日目にはSRM(n+199)のDiv2の問題を解く。 
  • Easy、Medium、HardのうちSystem Testを通った問題の提出点の合計値をその飲み物の評価とする。 
  • 但し、Easyは250点、Mediumは500点、Hardは1000点を基準とし、設定された点数が基準と異なる場合は満点がそれぞれ250, 500, 1000点になるように補正を掛ける。 
  • 制限時間は実際のSRMに基づき75分とする。 

Div2にしたのは僕のRatingが現段階で黄色底辺であり、Div1にすると実質Easyの点数だけで順位が決まってしまいそうだと思ったからです。

途中経過は点数は表記せずにSystem Testに通った/通らなかったのみを記載しています。

さて、それでは、競技プログラミングの「最強のオトモ」決定戦(?)、どうぞ!

(なげぇ…と感じた場合は3節のResultは読み飛ばしてもらっても構いません。途中経過長いから結果だけ見たい、という人は4節のDiscussionからどうぞ!)

 

 

**!免責事項!**

「俺の愛してるあの飲み物がねえ!」とか「お前の能力が低いだけだろ飲み物のせいにすんな」とか「研究として全く体をなしてない」とか「解く問題違うんだから単純に比較できないだろ」とか「もっと母数増やさなきゃ」等言いたくなるのはごもっともですが、半分ネタのような企画なので、何卒温かい目で見ていただくようよろしくお願いします。。

あと念のため言及しておきますがバックのペットボトルの空とかは毎回全部ちゃんと洗って干してますよ。

3. Result

12/01, Day1

f:id:natrium11321:20121201174341j:plain

初日はコカ・コーラ社の爽健美茶です!。 爽健美茶ってお茶のわりに結構好き嫌い分かれますよね。僕は割と好きなんですけど…。

この日はSRM200 Div2です。さて、この日のSRMの結果は・・・?

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

あれ、何か簡単すぎじゃね…?

Div2とは言え30分で全完出来てしまうのはマズイだろう…これじゃあ早解きに最適な飲み物検証になってしまうぞ…そもそもDiv2ってここまで簡単だったっけ…?

どうやらTopCoderは昔に行くほど問題が簡単になっていく傾向にあるようで、当時のDiv2はかなり簡単な部類に入ってしまうっぽいです。ちょっとイージーモードを選びすぎた。笑

しかし問題の難易度を出来るだけ統一するために変えるわけには行きません。むしろこれはこれで早解きに最適な飲み物検証ということで良いんじゃないかと開き直ることにしました。

ちなみにこの日の午前中は普通のSRMがありました。A cucumbermanが登場して戦慄した記憶があります。Not Ratedになったけど。

12/02, Day2

f:id:natrium11321:20121202100403j:plain

2日目に選ばれたのは、綾鷹でした。同じくコカ・コーラ社。

綾鷹美味しいよね。よく買ってます。

この日はSRM201 Div2です。さて、この日のSRMの結果は・・・?

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

3つ全部無事に通りました!。Run System Testの文字を押す時って結構ドキドキするよね。

ちなみにこの日はUTPCがありました。僕は「久留米高専の誇りを賭けた最後の共同戦線」というチームの一員として参加してました。

12/03, Day3

f:id:natrium11321:20121203110218j:plain

3日目はまたもやコカ・コーラ社の超有名スポーツ飲料アクエリアス / AQUARIUSです。ポカリより好きです。

ちなみに僕が参加した時の日本情報オリンピック(JOI)の本選や代表選抜合宿では、各競技前にこのアクエリアスビタミンガードのどちらかが貰えて競技中に飲むことができました。と言うことは、これらの飲料はJOI公認ということで飲むと競技の問題を解きやすくなる…!?期待が高まります。

この日はSRM202 Div2です。さて、SRMの結果はどうだったのでしょう!

Easy Passed System Test
Medium Failed System Test
Hard Passed System Test

Mediumが落ちた!!!

JOI公認アクエリやばいですね。これは今度からはビタミンガードの方を貰うべきなのでは!!?!?!?。!?

12/04, Day4

f:id:natrium11321:20121204104208j:plain

はい。予想出来た方も居るかと思いますが、4日目はコカ・コーラ社のアクエリアス ビタミンガードです。JOI公認ドリンクその2です。ビタミンCパワーです。ちなみにJOIの競技中は体を動かさないのにこれらのドリンクを結構飲むせいで頻尿になります。

この日はSRM203 Div2です。さて、SRMの結果は!

Easy Passed System Test
Medium Failed System Test
Hard Passed System Test

!?Mediumが落ちた!!!!!!

悲しみに包まれました。どうやらJOIの公認するドリンクはどちらも飲むとMediumが落ちてしまようです・゚・(つД`)・゚・  今度からアレですね、爽健美茶と綾鷹を配ったほうがよさそうですね。。w

12/05, Day5

f:id:natrium11321:20121205102742j:plain

5日目はコカ・コーラ社のコカ・コーラです。僕は割とコーディングするときにコーラを飲むのが好きで、例えば去年の高専プロコンの開発の時には毎日1.5Lコーラを2本買って3人で飲んでました。他にも今年のICPCアジア地区予選でも競技会場に1.5Lコーラを持ち込んで飲んでました。

ところでどうでもいいですがこのコーラのパッケージ可愛くないですか!!!

この日はSRM204 Div2です。さて、SRMの結果はいかがだったのでしょう??

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

久々の全完です。しかもMediumを491.59ptsで通せたのでマジCoolです。さすがコカ・コーラさんだ!!

12/06, Day6

f:id:natrium11321:20121206153526j:plain

さて、コーラと対をなす飲み物といえばアサヒ飲料三ツ矢サイダーですよね!。三ツ矢サイダー癖がなくて飲みやすいです。なんかペットボトルがスラッとしてて無駄にかっこいいしね。

この日はSRM205 Div2です。さて、SRMの結果は??

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

全部解けました!しかしMediumにやや時間を取られてしまった\(^o^)/ コカ・コーラに一歩及ばず…という感じでした。

12/07, Day7

f:id:natrium11321:20121207143417j:plain

さてさて炭酸飲料シリーズが続きます。この日の飲み物はコカ・コーラ社のカナダドライ ジンジャーエール / CANADA DRY。甘さ控えめな大人の炭酸飲料です。UTPCの時はこれを飲んで参加してましたよお。

この日はSRM206 Div2です。SRMの結果はこちら!。

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

うーん、Hardに時間がかかってしまったなあ。というかReading Hardだとどうしても時間を食われてしまうんだよなあ…。

12/08, Day8

f:id:natrium11321:20121208125005j:plain

お次はまたもや炭酸飲料、コカ・コーラ社のファンタグレープです。ファンタシリーズの中では一番好きです。最近学校の売店にストロベリークリーム味なるファンタが売られていたんですがなんかアレやばかった。

この日はSRM207 Div2です。SRMの結果はこちら!。

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

またもや全完!特にHardを早めに解けたことが高得点につながりました。なんか炭酸飲料系安定してるなあ。

ちなみにこの日はWUPCがありました。WAを貰いまくった結果僕の順位は21位でした。

12/09, Day9

f:id:natrium11321:20121209152515j:plain

長く続いた炭酸シリーズももう終わり、この日はサントリーなっちゃん オレンジです。今年の高専プロコンでホテルでデスマしてたときはなっちゃんを飲んだりしてました。ICPCの立食パーティーでも飲み物としてなっちゃんが頂けた記憶があります。

この日はSRM208 Div2です。SRMの結果をどうぞ!。

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

EasyとMediumはそこそこ高い点数だったんですけど、Hardの点数が低くなってしましました\(^o^)/

ちなみにこの日の午前二時に普通のSRMがありました。眠い目をこすって参加した結果Easyを落として0点をもらいレーティングが100近く下がりました☆(ゝω・)v

12/10, Day10

f:id:natrium11321:20121210173422j:plain

さて、フルーツ・野菜つながりで、折り返し地点10日目の飲み物は伊藤園一日分の野菜熟トマトです。野菜ジュースとトマトジュース!なんか写真背景にある変なジョーギは気にしないでください。

この日はSRM209 Div2です。食物繊維パワーを得たSRMの結果はいかに!?

Easy Passed System Test
Medium Passed System Test
Hard Failed System Test

Hardが落ちた(悲しみ)

いや違うんですよこれはトマトジュースのせい。EasyとMediumはおいしい野菜ジュースを飲んで解いていたんですけど、これはかなり高得点だったんですよ。Hardにさしかかってトマトジュースを口にした瞬間に思考能力が落ちて、しかもトマトジュース美味しくなくて、やっとの思いで提出したら落ちるという。まあ原因はDPの添字が1つずれていたことなんですけど、確定しました競技プログラミングにトマトジュースは向いていないです!(トマトジュースファンの方がいたらごめんなさい)

12/11, Day11

f:id:natrium11321:20121211150602j:plain

お次はフルーティなグリコのマイルド いちごオーレです。

ところで突然の告白ですが僕はいちごオレが苦手です。なんか飲んでると気分悪くなってくr(省略されました)

 

この日はSRM210 Div2です。SRMの結果は以下です!

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

再び3完し人権を取り戻しました!いちごオレ苦手なはずなのに何故かスコア高いんだよなあ・・・。

12/12, Day12

f:id:natrium11321:20121212141850j:plain

12日目はミルクつながりでダイドーおいしいミルクココアです。

ココア、美味しいですよね。特に今年の冬のような厳しい寒さの時に飲むと、体が芯から温まります。

この日はSRM211 Div2です。結果はコチラ。

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

全部通ったヽ(゚∀゚)ノ 

ちなみにこの日は沖縄高専の方々によるJOI模擬予選が行われました。いちおうちゃんと全完して後輩に示しをつけることができました(?)。

それとこの日のふつうのSRMはRegisterが間に合わず見逃してしまいました☆

12/13, Day13

f:id:natrium11321:20121213170024j:plain

13日目はヤクルトです。ヤクルトって初めて自分で買ったんですが結構高いんですね…。

しかし高いだけの価値はあります、特定保健用食品です。生きたまま腸内に到達する乳酸菌 シロタ株(L.カゼイ YIT 9029)の働きで、良い菌を増やし悪い菌を減らして、腸内の環境を改善し、お腹の調子を整えます(パッケージ原文ママ)。1日あたりの目安摂取量1本(65mL)のところを一度に5本も飲むんだから、これは競技プログラミングにおいても期待ができそうですね!。きっとシロタ株が良いバグを増やし悪いバグを減らしてソースコードの保守性を改善してくれることでしょうヽ(゚∀゚)ノ 

この日はSRM212 Div2です。期待の結果は、こちら!

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

全部通りました!しかも期待通り、どれも高得点でした。更にSample全部一発で通ったんですよ。やはりヤクルトは僕らの見方だった!!

12/14, Day14

f:id:natrium11321:20121214153054j:plain

14日目は、サントリーボス とろけるカフェオレです。写真が微妙に事後に見えるのはきっと気のせいです。いちごオレよりカフェオレの方が好きです。

この日はSRM213 Div2です。結果は以下のようになりました!

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

全部通りました!こう250 500 1000の文字が次々に緑になっていく様を眺めるのは楽しいですね。Hardはライブラリとして持っていたツェラーの公式が何かバグってて時間を喰ってしまいましたが。

12/15, Day15

f:id:natrium11321:20121215173154j:plain

この日はコカ・コーラ社のイリー イッシモ エスプレッソ ブラックです。無糖です。コーヒー美味しいですよね。以前は先輩が研究室に豆を挽く機械を持ってきてて、時々挽きたてを飲ませてくれたんですよ(・ω<)

この日はSRM214 Div2です。カフェインパワーや如何に???

Easy Passed System Test
Medium Passed System Test
Hard Failed System Test

Hardが落ちた悲しみ…。何故でしょうコーヒーが無糖だったからか、はてまて問題がReading Hardな文字列処理だったからか。しかし頭を使うプログラミングにコーヒーは確かにあまり向いてないかもしれません。

12/16, Day16

f:id:natrium11321:20121216174158j:plain

キリンの午後の紅茶 ストレートティーです。

最初に断っておきます、僕は紅茶が苦手です:;(∩´﹏`∩);:

この日はSRM215 Div2です。

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

コーヒーHard落ちたのに紅茶全部通ったのは何故だ(憤慨)

やっぱ紅茶が甘かったからかなぁ…。でも紅茶は苦手です・・・

ちなみにこの日はJOI予選がありました。後輩たちが予選突破してくれると良いなあ。あとAtCoderのARCもありあましたね。DPの実装で死んでいたけど!。

12/17, Day17

f:id:natrium11321:20121217181220j:plain

終わりも近い17日目はカルピスです。紅茶が残ってるように見えるのは気にしない。

どうやらカルピスを飲むと記憶力が上がるらしいですよ。この記事を見てカルピスの原液を買おうかと一瞬思ったんですが流石にやめましたw。普通のカルピスウォーターでも効果はあるはず。記憶力が上がれば、あれ?制約なんだっけ?とわざわざ問題を確認しにいく手間が省けますね。

この日はSRM216 Div2です。さて、記憶力を伸ばした結果は…?

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

おぉー全部通りました。実際に記憶力が伸びたかはちょっと分かりませんが、少なくとも飲んで良い効果はありそうな気がします(プラシーボ)。

12/18, Day18

f:id:natrium11321:20121218154323j:plain

18日目はみんな大好きRed Bull。翼を授けます。デスマのオトモです。一本200円します。

缶の側面には「RED BULL® Energy Drink (エナジードリンク):パフォーマンスを発揮したい時のために開発されました。アルギニン、カフェイン、ナイアシンパントテン酸、ビタミンB6・B2・B12入り微炭酸飲料。Red Bullは、トップアスリート、多忙なプロフェッショナル、アクティブな学生、ロングドライブをする方など、世界的な評価をいただいています。」と書いてあります。これは本当に期待が高まります。

この日はSRM217 Div2です。無事に翼を得て羽ばたいていけたのでしょうか・・・?

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

点数は1600点近い!!Mediumが600点満点とはいえレッドブルの効果は伊達では無さそうです。これはかなりの高順位を期待できそうです。しかもHardの点数がほぼ777.77点でかなり良い感じですね。いいことが起こりそう!

12/19, Day19

f:id:natrium11321:20121219131631j:plain

!?なんでしょうこれは。

水のように見えますが、よく見るとラベルには「探検ドリランド」と書いてあります。

はい。これはミネラルウォーターです。しかもICPCのエクスカーションでグリーに企業見学に行った時に貰ったものです。物持ちよすぎ…w

まあね、グリーが作っている(?)くらいの水なので、きっとプログラミングにおいて高いパフォーマンスを発揮することが出来るに違いありません!。

取り組むSRMSRM218 Div2です。さて、結果は・・・?

Easy Passed System Test
Medium Passed System Test
Hard Failed System Test

Hard落ちた/(^o^)\

GREEさん・・・

 

12/20, Day20

今日です。最終日です。

最終日に選ばれた栄えある飲み物は・・・

 

 

f:id:natrium11321:20121220181712j:plain

シャンメリーです!!!!!!!

まだ早いですけど、クリスマス近いですし???

シャンパンを模した子供用飲料を飲んでクリスマス気分を味わうのも粋でしょう(*´∀`)

 

ちゃんとグラスに注いで飲みましたよ~

f:id:natrium11321:20121220182931j:plain

 

さて、取り組んだのはSRM219 Div2です。最後に有終の美を飾ることは出来たのでしょうか!

Easy Passed System Test
Medium Passed System Test
Hard Passed System Test

おーっ!華麗にHardのDPを通すことができました!!

4. Discussion

さてさて、実験結果を集計した結果はこちらになります!。

f:id:natrium11321:20121220193725p:plain

栄えある1位はファンタグレープとなりました!以下、2位シャンメリー、3位コカ・コーラと続きます。

高パフォーマンスを謳ったRed Bullやヤクルトが上位に来ているのは流石ですね。お茶類も割と良い順番に居ます。逆に順位が低いのはアクエリアス系、コーヒー系といったところでしょうか。

ちなみに最も早く解くことが出来たのはコカ・コーラの24分27秒、逆に最も解くのに時間がかかったのはなっちゃん オレンジの62分16秒でした。

ちなみにせっかく色々データが取れたので、それぞれの飲み物について、横軸に各成分(エネルギー・たんぱく質・脂質・ナトリウム等)、縦軸にTopCoderの得点率を取ったグラフを作ってみたりもしたんですよ。そうしたらたんぱく質、脂質、ナトリウムは割と無相関に見えたんですが、エネルギーと得点率が若干面白いグラフになったような気がしたので貼り付けておきます。

f:id:natrium11321:20121220202602p:plain

トマトジュースと野菜ジュースはそれぞれ別に計算しました。またシャンメリーは栄養表示がなかったので省いています。上のグラフ、エネルギーが低い飲み物は低スコアから高スコアまで散らばっていますが、高い飲み物は安定してそこそこのスコアを出せているように見えませんか?? エネルギーと糖質量はほぼ比例します。と言うことは、やっぱり競技のときは甘い飲み物を飲むと脳の栄養になって、高パフォーマンスを叩き出せると言えるんではないでしょうか。

5. Conclusion

今度から競技プログラミングの大会にはファンタグレープまたはコーラを飲みながら参加しましょう。シャンメリーでも良いですがクリスマス前後以外は季節感の無いやつだ…と思われるのでオススメはしません。

6. References