結果発表

kurenai3110さん総ターン数51,972

さはらさん総ターン数52,924

c7c7さん総ターン数53,640

nagissさん総ターン数53,833

yoshnaryさん総ターン数53,922

最終ランキング TOP 30

順位ニックネーム区分応募日時総ターン数時間(秒)
1 kurenai3110 学生 2019-10-13 01:10:26 51,972 56.1718
2 さはら 学生 2019-10-15 10:09:38 52,924 51.5937
3 c7c7 学生 2019-10-15 11:29:40 53,640 59.5937
4 nagiss 学生 2019-10-15 11:56:58 53,833 58.9296
5 yoshnary 学生 2019-10-15 11:10:00 53,922 54.4218
6 phocom 学生 2019-10-15 01:40:31 54,641 57.5546
7 shamal 学生 2019-10-15 11:59:04 54,936 58.1250
8 ishimura ハル研 2019-10-11 21:55:47 55,220 55.4921
9 Ark 学生 2019-10-15 11:55:06 55,297 59.8906
10 daisyo 学生 2019-10-15 08:59:48 55,314 59.9140
11 nari 学生 2019-10-15 11:56:24 55,402 58.6718
12 しゃっふりゅー 学生 2019-10-15 09:41:37 55,431 58.5937
13 やむなく 学生 2019-10-15 11:56:36 55,571 56.1640
14 あそう 学生 2019-10-15 11:37:04 55,577 59.5156
15 takumi152 学生 2019-10-15 09:58:48 56,023 59.6328
16 NOSS 学生 2019-10-15 11:44:54 57,109 54.2578
17 Nyaan 学生 2019-10-10 00:36:20 57,360 59.4375
18 sbite 学生 2019-10-15 07:44:07 57,473 59.5000
19 じろう 学生 2019-10-15 08:40:35 58,235 14.6640
20 masayuki ハル研 2019-10-15 02:52:18 58,364 51.3046
21 ☆亀色魔法少女物理好き★ 学生 2019-10-15 04:00:13 58,578 59.9062
22 Tatamo 学生 2019-10-15 11:58:53 58,776 36.9921
23 kotamanegi 学生 2019-10-12 12:21:33 58,899 58.4453
24 autumn_eel 学生 2019-10-14 20:41:03 59,069 58.8515
25 arimatsu ハル研 2019-10-15 09:03:03 59,360 58.4218
26 MiuMiu 学生 2019-10-15 01:11:49 59,419 56.0234
27 いの 学生 2019-10-15 11:49:36 59,640 53.3359
28 tagoya ハル研 2019-10-12 14:56:35 59,691 59.1875
29 tada 学生 2019-10-15 11:09:44 60,194 56.8437
30 atono ハル研 2019-10-15 10:21:49 61,154 59.4531

チャレンジスコア賞

全応募者のうち48%の方が、チャレンジスコア「77,777」を達成されました。
厳正な抽選の結果、以下の5名の達成者がチャレンジスコア賞に決定しました。

  • くめさんさん
  • tomaさん
  • nihilさん
  • はいさいさん
  • tkhtさん

実行委員会による総評

問題の特徴

今回の問題は、複数のカメと複数のエサがあり、取る順番や役割分担を効率化する問題でした。

問題の制作過程では、カメが別のカメの背中に乗り降りするのにも1ターンかかる(乗られるカメは動いてはいけない)など、複雑なルールの問題案も検討しましたが、最終的には、同じ場所にカメが集まるだけで自動的に背中に乗れて高い場所にあるエサが取れるというシンプルなルールに落ち着きました。

また、当初はエサの高さを生成する乱数は一様乱数のみにする方向で検討していましたが、それだとカメがあまり散らばらずにほぼ集団で行動してしまうため、解法のバリエーションを増やすために、低いエサが多いステージ、中くらいのステージを追加してみました。

シンプルですが、考えることが多く、奥が深い問題になったと思います。

作品の傾向

この問題では、どのカメがエサを食べるか、そしてどういう順番で食べるかと、考えることが多くあります。

そこで、まず全体での食べる順番を考え、その上で担当するカメを割り当てるという方が多かったようです。

食べる順番の決め方の1つとして、あらかじめ決められたコースの中から、もっとも良かったものを採用するという方法がありました。

そして、そのコースも、左から右、右から左のほか、時計回り、反時計回り、クネクネとS字を描くように食べるなど、ユニークな手法が見られました。

ほかには、高いエサを食べる順番は巡回セールスマン問題を解いて決めて、低いエサを途中に挟むような手法も見られました。

どのカメが食べるか

ここは単純に、各カメの現在位置と時刻から、早く次のエサに到達できるカメを割り当てるというシンプルな手法が多かったようです。

先ほどは分かりやすく「食べる順番」としましたが、ここでは、「食べるカメを決める順番」とします。この違いについて詳しく説明します。

どのカメが食べるか1” class=

たとえば、上の図のようなケースで、食べるカメを決める順番がA→B→Cのとき、最初にAを6匹で食べ、そのうちの3匹がBに向かいます。そして、Cを食べるカメを決めるのですが、最も早く到達できるのは、Aに残っている3匹なので、この3匹がCに向かいます。

これを時系列で考えると、Aを6匹で食べた後、Cを3匹で食べ、残りの3匹も同時にAを出発するのですが、実際にはCより後でBを食べるというふうになります。

このように、食べるカメを決める順番と、実際に食べる順番は異なることがあります。

どのカメが食べるか2” class=

上の図のようなケースでは、食べるカメを決める順番をA→B→C→D→Eとすると、Aを6匹で食べ、そのうちの3匹がBを、残りの3匹がCを食べるようになってしまいます。そして、Bを食べた3匹がDを、Cを食べた3匹がEを食べるようになるのですが、あまり良い戦略とはいえません。

おそらくこの図を見た多くの方は、Aを6匹で食べた後、左右二手に分かれて、左側担当になった3匹はB、Cを、右側担当になった3匹はD、Eを食べるのが良いと考えるのではないでしょうか? もちろん、それが正解です。

ここで、食べるカメを決める順番を、A→B→D→C→Eとしてみましょう。すると、Aを6匹で食べ、そのうちの3匹がBを、残りの3匹がDを食べます。そして、Bを食べた3匹がCを、Dを食べた3匹がEを食べるようになり、期待通りになります。

このように、食べるカメを決める順番をうまく設定すると、食べるカメの決め方はシンプルでも、それなりにうまく分業するようになるため、とにかく食べるカメを決める順番をいろいろ試してみるという方が多かったようです。

そして、ここでの適切な食べるカメを決める順番は、もはや巡回セールスマン問題を解いて求めたようなものとは違います。ビームサーチや焼きなまし法などでこれを改善する方が多かったようです。

評価環境

評価環境で使われた乱数は、

randomSeedX = 0x0054660a; randomSeedY = 0x815c8c59; randomSeedZ = 0x462da825; randomSeedW = 0x04006e2c; randomSpinX = 0x81b; randomSpinY = 0xcf;

でした。

まとめ

今年のプロコンは、シンプルながらも、複数のカメを動かさないといけないため考えることが多く、難しい問題だったと思います。

開始当初は応募数も少なく穏やかな滑り出しでしたが、締め切りが近づくにつれて応募数が増えてきました。

アンケートからは、初参加の方から常連の方まで各々のスキルに応じて取り組んでいただけたことが窺え、実行委員会としては大変うれしい限りでした。

最後になりますが、プロコン2019はお楽しみいただけましたでしょうか。

このようにプロコンが盛り上がりましたのは参加者のみなさんのおかげと、実行委員会一同、感謝しております。熱心にご応募いただき、本当にありがとうございました。

top