「っこ」のブログ

っこがプログラミングに関しての記事を書くブログ

JOI予選予想

この記事はprolab Advent Calendar 2016の12/4の記事として書かれています。
www.adventar.org

どんどん参加しよう!(特に1,2年生が少ない)
多分ふざけた内容でもいいぞ!(もしかしたら自分がもう一日どこかでふざけた内容でやるかも)
ゲームの攻略でもなんでもええんやで!(というか去年僕は、途中までjubeatの上達について書いた気がする)




目次
1.言い訳
2.一年間の振り返り
3.JOI予選予想


実験的にこの記事はですます調を極力避けている。
それについて感想があれば是非コメントで書いたり僕に教えたりしてほしい。


言い訳

記事が公開される直前までAdventCalendarの内容の欄には何が書いてあっただろうか?
「才能と努力について」だ。
そんな深いこと僕は語れない。
というか、本当は語ろうと思っていたし、語ろうと思えばいくらでも語れるのだが、まだ思想が安定していない程度の人生経験なので、
1年後自分の記事を見てうわはずかしい(/ω\)ってなる気がしたのでやめた。

ついでに
・競プロは結局大事
フリーエンジニアや個人アプリ開発者として働くために
スマホゲーのマーケティング
・開発で作ろうとしているもの
・家事を減らす手段の比較(結婚、(男と)同居、ホテル族、執事・メイドを雇う)
などの没案がある。
すごく読みたい!と思うものがあれば、ぜひ教えてほしい。書いたり、LTでやったりするかもしれない。


1年間の振り返り

簡単に自分の2016 1月~1今日までを振り返る。去年はここが長すぎた気がするので、短く。
1月:なんかあったっけ。
2月:JOI本選にいく。あと10点で春合宿に行けた。 DDPCに行く。チョコフォンデュ美味しいった。
3月:CODE VSの予選をやっていた気がする。 音ゲー用のタブレットをこの辺で買った気がする。
4月:3年生になる。 アイデア出しがつらい。
5月:高専プロコンのアイデア出しと資料作りで忙しい。
6月:??
7月:高専プロコン頑張る。
8月:SuperCon本戦に出て11位で泣く。
9月:PCK予選8完11位で落ちたの私だ。
10月:高専プロコン自由部門で優秀賞(準優勝)。
11月:部長になる。 PCKもうひとつの本選で優勝する。
といった感じである。
あきらかに1月と6月なまけすぎた感じがあるので、そういう時間に開発の勉強を進めたい。


JOI予選予想

もうすぐJOI予選である。
JOI予選を通過したい人のために、
適当に問題を予想しようと思う。

また、今回の予想が外れても、僕はいっさい責任を負わない。
今年の流行語大賞のように責められても僕は知らない。
信じ切って練習するのは、自己判断自己責任でお願いする。

過去の傾向
f:id:sujinkko:20161204021013p:plain
この表から僕は3つの出題パターンを考えた。


パターン1
1問目:プログラミングの基本(難易度1)
2問目:簡単なシミュレーション(難易度2上位)
3問目:円環、頭良くやるやつ(難易度4)
4問目:DP(難易度5上位)
5問目:最小全域木(難易度6)
6問目:セグ木等の木系のデータ構造+α(難易度8上位~9下位)
ボーダー:420


まず1,2問目のパターンは変わらないと思う。
そもそもパターンが変わったところで、難易度4以上にはならないと思うので、ボーダーにはほぼ影響しないだろう。

表にまとめてみると、本選に比べて、予選には円環の問題が少ないという印象を受けた。
今回3問目に出ると予想しておく。

4問目にはDPが戻ってくると予想する。
前回DPではなくなったのは、DPを外す流れではなく、DPを続けすぎたからなのだと思う。

5問目はダイクストラに関する問題が出る気がしている。
最小全域木やるだけみたいな問題が来ると思う。

6問目は、データ構造系がなんとなく来ると思う。
例年通り、予選通過には影響しないと思われる。
(ただし300+20+20+20などがボーダーになることもあるので、部分点はとろう。)

400+20あたりがボーダーか。


パターン2
1問目:プログラミングの基本(難易度1)
2問目:簡単なシミュレーション(文字列を扱う)(難易度2上位)
3問目:二次元配列上もしくは二次元配列そのものをなにかしらシミュレーションして、循環性を探す問題(難易度4上位)
4問目:DP(難易度5上位~6下位)
5問目:min-max法、ゲームで戦う系(難易度6上位)
6問目:やばめのDP(難易度8)
ボーダー:360~380


3問目について説明すると、
ただ単純にシミュレーションすると時間が足りない。しかし途中で同じ盤面に戻る(同じ座標に同じ向きで戻る)。
それを使って、2周目以降のシミュレーションを省略する。
といった問題である。
ずいぶんと大胆に予想してみた。

5問目はなんとなく今min-max法が流行ってる気がしたので入れてみた。PCKもうひとつの本選のせいだろうか。

6問目は、一見DPに見え無さそうなDP。二次元のフィールドを~~ 系ではないと予想する。

4完凡ミス勢(400-40、400-20)や300+20+20+20あたりがボーダーか。


パターン3
1問目:プログラミングの基本(難易度1)
2問目:シミュレーション(難易度3)
3問目:やるだけDP(難易度5下位)
4問目:貪欲、仮定して貪欲(難易度6)
5問目:平均最大化(難易度7下位)
6問目:累積和+六角座標座圧(難易度9)
ボーダー:340


大胆に3問目にDPが来ると予想する。
ただし、3問目にDPが来た場合、難易度はシルクロード程度かそれ以下だと思う。

4問目に考察がいるような貪欲が来ると予想する。

5問目に二分探索に関する問題が来ると予想する。
二重二分探索も来るかもしれないと言っておく。

6問目は自分でもよくわからない。適当に来そうなのをくっつけた。

ボーダーは300+20+20あたりか。


やるべきこと
まず、難易度5のDPは解けるようにして損はない。6もできたらやったほうがいいだろう。
というかDPに限らず難易度5~6下位をひたすら埋めたほうがいい。
また、難易度3~4を正確に高速に解くことも大事である。
JOI予選は実質提出が一回の一発勝負なので、正確さは大事である。
また。JOI予選は3時間6問。しかも入力ファイル、出力ファイルの準備、
ダウンロード、アップロードなどがあるので実質2時間45分である。
速く解けて悪いことはない。


まとめ
頑張れ!!!!

PCK2016予選(9/11(土))参加記

久しぶりのブログ更新です。色々心に残ったので書きます。

@の後はtwitterのIDです。

僕、っこ@sujinbemani_79c(3年)はゲド@gedotinku(2年)とチーム名「ゲっこド」として出ました。

同じ久留米高専からの主要チームとしては、
・らて@LatteMalta(3年)とうぃんじー@wing3196(3年)のガチプロチーム
・つよっしー@TSUYOSSHI_(2年)と電柱@himajin4491(2年)
・川さん@kawakawa0826(3年)とカフェオレ@HMSR73(3年)
カービィさん@sai_55220(2年女子)とふなちさん@hu_nachi(2年女子)
とかが出ました。

開始前

昼ごはんをコンビニで買ったら、千切りキャベツに箸が無くてつらい。

ゲドと序盤どういう風に攻めるか軽く打ち合わせる。
前日の深夜に競プロしてた感じ、競プロの感覚忘れすぎててWAしまくってて、本番でWA重ねるのが怖くなったので、
1~5問目のやるだけをゲドに任せて、6問目から僕が考察することにした。

13:30~14:00

6考察するもわからん。
その間にゲドが2問目でWAしてしまう。

あと、向かい側の机でうぃんじーが爪切り出した。

6わからんから5~8問目を見てみる。

5問目 自明。速い実装法を思いついたので実装も自分にやらせてくれとゲドに申し出る。

7問目 この時点では「やばそう」という感想だった

8問目 問題が読めない

うんこにいきたくなったので、うんこにいった。
某O.J.先輩のことも考えると、SJ教室の右前のほうでPCK予選に行くとトイレに行きたくなるのかもしれない。
(該当記事は消されているので悲しい)

14:00~14:40

帰ってきたらゲドが3問目で2WAしてた。
まぁどうせこのチームはWA勝負はできないと思ってたので8完するしかないと思った。

ゲドが4解いてる間に7問目が自明DPだと気付く。
8問目の問題解読も終了。
9も一応目を通した。

ゲドが4までをACして交代。
僕が5と7を解く。その間ゲドには6と8を考えてもらった。
5と7結構速く実装が終わったのにWAなしでACしたので良かった。

二人で話し合って、8は凸法(知ってはいるけどやったことない)+最小全域木でいけそうということが分かる。
6は貪欲考察、8は実装なので、特性的に、僕が6、ゲドが8をやることに。

14:40~15:40

パンケーキを裏返した回数によって焼きあがるの意味わからんし、回数が多いほど固くなってしまうのも意味わからんしそもそも一つだけ裏返せるヘラを買え

そんなこと言ってても仕方ないので考えます。
普通にいろいろ考えても思いつかなかったので、制約から解法を察する感じで行こうとしました。

N<=5000なので、O(N)っぽい問題に見せかけて、実はO(N^2)なのでは?と思ったが、データセットの数が100となっていたので、その線を消す。
なぜO(100*N)なのにNを10^5などにしないか考える。
もうひとつ数字があるじゃないか。「パンケーキを裏返さなければならない数」。
それに、AGCで似た問題が出たおかげで、端っこが1個でひっくり返せない問題なら、貪欲的に決められることはわかっていたので、
端っこを一つで裏返す回数を仮定すればいいと分かった。
端っこを一つで裏返す回数は0~3の4つの値を取り、それが左右にあるのでO(N*(4^2)(*データセットの数100))

9をちょっと考察するが、平衡二分木っぽさを自分で実装する問題と思ってしまったのでやめて、ゲドのコーディングを見守る。
ゲドがバグらせる(コンパイルできない)
じゃあ俺が6実装するかってなった途端ゲドが気付いたので直す
ゲドがバグらせる(答えが違う)
しかしここでデバッグの神様が降りてきました。多分トイレの神様でもあると思います。
なんと、サンプルケースを投げた時の出力を見ただけで、
・凸法部分の辺の長さが2乗のままになっている。
・凸法の最後の辺の長さが足されていない。
ということに気付いたのです。
天才か俺は。
ゲドが直す。AC

15:40~16:05

6の実装を僕がするため、交代。
9,10は解ける見込みがないものと思っていたので、ゲドには9,10を考えさせずに、コーディングを見守ってもらう。
(明らかにやばい実装ミスを探してもらう。)

自分が通せば本戦が見えるということで、緊張でタイピングもままならないほど手が震えてました。
落ち着け。

実装してる途中、「10分くらいは経ってしまったかなぁ」と思うたびに大体3分しか経ってませんでした。
競プロコンテスト終盤でよくあるこれを、僕は「クロノスタシスしっぱなし現象」と呼んでいます。
クロノスタシスってかっこいいよね。

実装終わった!サンプルもあってる!提出するで!
 →WA
私、本日初WAでございます。

バグ探してたら、p[N-1]としなければいけないところをp[1]としていて「は?」って感じだ。
直す。AC

16:05~16:30

やれることはやった。
順位表凍結時点で11位だったが、凍結後に8問目を解いたので、凍結時点のランキング表でいえば9位に当たる位置である。
2チームも抜いてないことを願う。

一応9,10を見てみる。
10はなにかしらやばいもの。二分探索かDPは使いそうとか感じてた。
ゲドが蟻本見てたら、9が平衡二分木ではなく、めんどめのセグ木で解けることがわかる。
めっちゃいそいで写経するがもちろん間に合わず終了。

終了

8完4WA(62点)

問題について
・よく考えたら6は仮定するのは片方だけでよかったことに気付く。
・10はDPをうまくゴニョゴニョやるらしいが、例年のPCK最終問題よりは楽らしい。

周りのチームについて
・らてとうぃんじーが予選トップ通過を果たした。
・つよっしーのところが123457の6完。
・ほかの主要チームは12345の5完、7に挑戦しようとしたがバグった、わからなかったなど。
・感触的にも順位表見てもやはり7より6のほうが難しそう。


最後に
 本戦行きてぇ
 通っててくれ

追記9/21
9/16に発表がありました。落ちてました。
正直、地域枠多すぎやろ。どうせ今年も本選0完みたいなのでまくるんやろな。
8完で落ちたチームが僕ら含め1~2チームだけらしいです。(8完で10位入らなかった沖縄は地域枠ですくわれた。)
もうひとつの本選優勝します。

「っこ」だからね。

この記事はProlabAdventCalendar2015の12/20の記事として書かれています。(23時間遅刻しました。日付内なので許して。)
www.adventar.org
1枚目が無事埋まって、2枚目ができたのでまだ空きがあります。参加できる方は参加していってください。二つ目でも大歓迎です。


この記事の目次
1 1年間の振り返り
2 言い訳
3 音ゲー(jubeat)の上達と精度の取り方について
4 「音ゲー」とは
5 最後に(これから)


1年間の振り返り

ゆる~く僕の1年間を振り返ります
4月~6月
あんま覚えてない。
この頃は物理で102点とってたらしい。次のテストは40点台。
7月
PCKモバイル部門の企画書が大詰め。結果は落ちた。辛い。沖縄強い。

8月
SuperCon本選に行って下から4番目になる。
部の合宿でド深夜に寮の警報鳴らす。

9月
PCKプログラミング部門で落ちる。僕が6問目解けてたら実はWA数的に僕たちが出場していた。(でもAutoDoorのほうが競プロ強いし、僕たちが落ちるのは妥当だった。)

10月
なにしてたっけ。勉強も競プロもあんまりしてなかった気がする。

11月
高専祭。ゲーム開発できなくて辛かった。
物理で初めて再試くらうと思った。40点(レポートで済むすれすれのライン)だった。

12月(一番最近なので細かく振り返ります。)
7日(月)
334記録更新する。

10日(木)・12日(土)
部内JOI模擬予選・kagamizさん主催JOI模擬予選で死ぬ。
焦りまくるというより、今年は落ちるんだと思った。

13日(日)
JOI予選。
1~3問目:25分で終わる
4問目:DPじゃなくてビビる。思いつきから実装まですべて含めると1時間かかってしまう。
5問目:解法がわかるけど実装が間に合うかわからないので部分点解を書く。
6問目:DPっぽいって思ったけどわからないので部分点解書いたらバグる。時間内に直らず。

17日(木)
JOI予選結果発表


通りました。久留米の中では最下位通過なので冬休み精進します。


18日(金)


辛い。
URLです。→https://www.youtube.com/watch?v=lR4xG3t4dgg
うぃんじーに14とかギリギリだから+2個って言われたので、間を取って+1個にします。二つ目です。→https://www.youtube.com/watch?v=dfwb224LKl4
検索しても出てこない(URLでしか入れない)ようにしてます。


同日
電車に乗っているときに恐怖のリプが飛んできます。


世界史レポの提出は月曜の朝です(デデドン)。


45%の人を信じて頑張っていきたいと思います。


言い訳

さて、今から本題に入るわけですが、本当は、競プロについて書こうとしたんです。
具体的に言うと、確率、期待値系の問題。もっと具体的に言うと、
去年行われたdwangoプログラミングコンテストの予選のC問題「ゲーマーじゃんけん」について書こうとしたわけです。
なぜかというと、僕は一日半かけてその問題を解いた時の考察が、いろいろ間違った考察をした挙句、それがパズルのように組み合わさって想定解にたどり着いたとき、感動したので、それを伝えていきたいなと思ったんです。

ないんですよその考察をしたときの紙が

自分がどれだけ遠回りをしながらこの問題を解いたか、そういうのがわからない。そこを一番伝えたいのに。ええい没だ。

はい。音ゲー


音ゲー(jubeat)の上達と精度の取り方について

この項目は「音ゲーやってない上に興味すらない」という人にとっては、ややつまらないかもしれないので、そういう人は次の項目まで飛ばしましょう。


音ゲーを上達するに至って、いろいろな壁があります。
今回は僕が得意としている音ゲーである「jubeat」の壁についてひとつひとつ解説したいと思います。

壁0
壁内容:レベル6がクリアできない
この壁は、「初プレイで乗り越えられたら上手いと言われる」程度の壁です。
プレイしていたらおのずとわかるコツだけで乗り越えられる範囲なので、大体の人が数プレイするor動画をちょっと見るだけで乗り越えることができます。

壁その1-1
壁内容:レベル8~9の密度が高い曲がクリアできない
レベル9でも密度が低い曲は数曲クリアできるのに、8の密度が高い曲はクリアできない。といった人が多くいます。
これは、使用しているマーカーを変えることで乗り越えることができます。上手くなってからマーカーを変えるのは大きな決断となるので、早い時期に、自分に合ったマーカーを探しましょう。

壁その1-2
壁内容:レベル8~9の初見や知らない曲でクリアできない
画面全体を見る、死角を減らす、リズムについて知識を得る。
など「jubeat コツ」とかで調べたときによくでてくるコツのどれかができていないはず。上手い人が言う「コツ」を信じてプレイしましょう。
積極的に知らない曲をプレイしてみることも良いでしょう。

壁その2-1
壁内容:レベル9詐称~レベル10がまったくクリアできない
このあたりのレベルは、それまでのレベルの曲の難しい場所(=発狂)がつなぎ合わさったような譜面をしていることが多いです。
今までに自分が苦手だなぁと感じた譜面を、譜面予習をせずに乗り越えることで、いままでわからなかったものが急にわかったりするので頑張りましょう。

壁その2-2
壁内容:簡単な譜面(レベル6以下)でもSS以上がでない
人間メトロノームしましょう。僕のオススメはケツです。
わかりにくい書き方をしましたが、「体でリズムをとる」ということです。ケツ振れケツ。
あと、このくらいの実力でピアノ押ししてる人はやめましょう。変な癖がつきますし、精度も悪くなります。

壁その3
壁内容:レベル10上位~最上位がクリアできない
指の動きに問題があるか、譜面認識力に問題があるかは、人によりますが、共通の解決法があります。
ここからは、お金はいりませんが、時間は要ります。
動画です。
適当なレベル10の動画を見ながら、机上でプレイします。(正確に言うとプレイした気になります。)
普段プレイするとき、「自分の指を広げた時にパネルのどこからどこくらいまでか」などを参考に、大まかな大きさを覚えておいて、この作業に挑むと、なおよいです。
この作業をすると、動画を見てない曲のスコアも上がります。指の動かし方と、譜面認識力の増加によるものです。

壁その4-1
壁内容:レベル10のスコアが簡単めな曲でもAどまり
精度が少し悪くてもSをとることはできます。基本的な課題と対処法はその3と同じです。
また、ランダムに曲を選んでその赤(EXTREME)をプレイしましょう。レベル8~9の初見力とレベル10の総合力は紙一重です。

壁その4-2
壁内容:レベル1~4でもEXCが取れない
勢いよくパネルをたたきましょう。といっても台パンではないです。
言い方を変えるならば、手の動きは、等速直線運動ではなく、等加速度運動に近い形で動かすことが理想です。
また、低レベルのEXCなら、中堅ランカーさんによくいる人差し指と中指を完全にそろえて、その指と親指しか使わないスタイルの指使いも良いでしょう。
その曲が、音ズレしていないか調べていくことも大切です。BPMが一律ではない曲は特に注意です。


ここからは、大きな壁があるというより、きつい坂道を上る感じです。「上がっていくのが常に難しい」みたいな。

・自分の店のjubeatの筐体が音ズレしていないか調べる。
saucer初期のバグが残った筐体だと音ズレしています。久留米高専の近くでいえば、筑紫野イオンのjubeatがそうでした(今は修正済み)。
・自分のボタンをたたいてる音と流れている音楽があっているか冷静に判断する。判断できない場合は録画してみてみる。これ乱打譜面とかで特に大事です。
・スライドと乱打の光らせ方は体で覚える。
・難しい譜面を譜面予習せずに詰めてみる。
・ピアノ押しでも光らせることができるようにする。
・ごり押しで押しても16分を光らせることができるBPMを知っておく。
・目押しも使う
・±42ms(Perfect範囲)というのがどういうものなのか、感覚的にも理論的にも知っておき、すべてのマーカーを±0msに近づけるのを目指すのではなく、±42msに押し込む。という感覚でプレイする。
etc.

この辺までをマスターすればレベル8~9(のEXCがしやすい曲)でEXCしたり、レベル10上位でSSSとることができます。
やっていきながら上手くなるしかないですが、重要なことが一つあります。悪い癖をつけないことです。
他の人のプレーを見たり、ゲーセン友達を作ると、自分の悪いところがわかります。
EXCを狙う曲がなくなった!ってときに狙ってみるといい曲としてオススメしたいのが「やさしくなりたい(EXT レベル9)」です。
乱打、きつめの同時押し、採譜ズレ、初見殺し、注意力等、EXCを狙うときに必要になることが多い特徴の全ての簡単なものが入っています。この曲EXCするとEXCできる曲の幅が広がります。

この後に、最後の壁があります。

壁Final
壁内容:トップランカーになれない。
はい。今、僕はここで止まっています。
トップランカーってどれくらいすごいのか。
まず、全曲EXCできる能力を持っているのは当たり前です。
が、たぶん僕も、譜面予習&研究をしまくったうえで1000回プレイしてEXCできない譜面は1曲もないでしょう。
では、僕(くらいの実力の人)とトップランカーとでは何が違うのでしょうか。
それは、10上位以上の曲のEXCにかかる労力です。
あやつら、人間じゃないです。数回プレイすれば、譜面でわからないところは全くなく、そして20回くらい以内にはどの曲もEXCしてしまいます。
copious時代までは、譜面動画を見て覚えてEXCするのが当たり前の世界だったのに、譜面動画が上がる前にEXCしていきます。人じゃない。
やばい。
やばいしかいえねぇ。


と、こんなに腕の上達について話しましたが、次の項目のほうが大事なので次の項目絶対読んでください。


音ゲー」とは

今から書くことは音ゲーに限らず「娯楽」すべてに多少当てはまるかもしれません。

音ゲー、いや「娯楽」において大切なことは大きく分けて二つあると思います。
一つ目は「楽しむこと」
二つ目は「リアルとのバランス」
です。


一つ目:「楽しむこと」
音ゲー、確かに楽しいです。しかし、音ゲーマーのみなさん本当に楽しんでますか。
全く楽しんでないプレイヤーは、恐らくいないでしょう。
ただ、「義務感でプレイしているという部分が全くない」という人もほとんどいないと思います。

音ゲーをしてる人のツイートなとを見ているとよくこういうツイートが見受けられます。

「最近音ゲーのモチベが低くてダメ」
「曲解禁しないといけないからゲーセン行かないと」
「最近やってなくて音ゲー下手になってるからやりにいかないと」


音ゲーが下手なのがなんだ、曲解禁しないのがなんだ。誇れることは音ゲーしかないのか。

文章だと、音ゲーやってる人にもやってない人にも伝わりにくいですね。具体的な音ゲーマーの実情を上げましょう。
同時期に投稿された別のプレーヤーの動画を紹介します。


その1:[jubeat prop]LUV CAN SAVE U(EXT)EXC ‐ ニコニコ動画:GINZA
その2:【jubeat saucer fulfill】 10,000,000,000 〈EXC〉 ‐ ニコニコ動画:GINZA


その1について
このプレーヤーは最近EXC動画を連続で投稿していて、結構うまいプレーヤーです。多分、僕よりちょっとうまいくらいです。
2:35くらいの言葉を聞いてください。
EXCだと分かった瞬間口からでた言葉は

「終わった」

終わった???
その後の言葉も聞いてみましょう。

やっと終わったよ10回目くらい?」
「あり得んだろこんなに点数出せんのは」

きっとこの人は、音ゲーあんまり楽しんでないです。義務感でEXCし、それを動画として投稿することによって、多少自己顕示欲を満たすことだけで音ゲーを続けているでしょう。
余談ですがこういう音ゲーマーは指と太鼓に多いです。


その2について
一方こちらの動画のプレーヤーはというと、EXCが分かった瞬間。


ガッツポーズ
これでもかというほどガッツポーズ

きっとこの人は音ゲーを最高に楽しんでます。
・体の動き方からは音ゲーをやっている最中の音楽とシンクロしている楽しさ。
・ガッツポーズからは、いい記録を出せた時の楽しさ、達成感。
・うれしそうな主コメとともに動画を上げているところから、自己顕示欲も満たしている。


ついでに僕の場合だと、高らかに両腕を上げ叫びます。「よっしゃああああぁぁぁ」みたいな。
そんでもって、見てた人とか、隣でプレイしている人に拍手してもらったり共感してもらえたりすると最高に楽しいです。

僕は現在、音ゲーに対しての義務感を減らそうと努力しています。
そもそも同じ実力くらいの人の中では、あまり義務感はなかったほうなのですが、それでも、上で上げたツイートのようなことを思ってしまうことがありました。
今は曲解禁しなくても、EXCしたい曲をなかなかEXCできなくても、全然へっちゃらです。
毎年一回、BEMANI機種合同で曲解禁イベントがあるんですが、去年までだと、そのイベントで曲を解禁しないのなんて信じられなかったんですけど、今年の絵日記イベント、半分も終わりませんでした。


二つ目は「リアルとのバランス」
例えば、「娯楽」のために生活費切り詰めたりするのは、その人が後悔しないならばいいと思います。
しかし、

・再試前日にやったせいで単位を落とした
音ゲー音ゲーの研究ばっかりして勉強してなかったら、志望大学に通らなかった。

絶対に後悔します。


音ゲーはリアルを壊しやすい娯楽だと思っています。
ほかの娯楽より時間はあまりつかわないし、お金も、大人がやる趣味(車、ゴルフ、キャバクラ)よりはかかりません。
ではなぜ音ゲーはリアルを壊しやすいのか。
これは2才半からやく15年間音ゲーをしてきた身だからわかります。


音ゲーが楽しすぎるからです。


なんだそのDMMr-18の宣伝みたいな屑みたいな意見って思った方もいるでしょう。
違うんです。明らかに、快楽物質(ドーパミン)等の出る量がおかしいです。

とある大学教授は、老化防止に適したゲームジャンルは音ゲーである。という発表をした。
という記事を僕は新聞で見たことがあります。
これは、脳内にでる様々な種類の物質が実験上一番多かったことによるもので、意外にちゃんとした実験をしていました。
しかし、「様々な種類の物質」には、脳内麻薬ともいわれる快楽物質が含まれているのです。

でも言われてみれば納得がいきます。
長くゲーセンにいた日は、意識がもうろうとしますし、家に帰るとありえないほど眠くなります。
また、自覚はないのですが、親からよく注意されるのが、会話の時の返答が適当になってるらしいです。
さらに、習慣的に脳に大量のドーパミンを出している人は長期的な集中ができないことも、医学的に証明されてるらしいです。
自分はそんなことない。そう思う方がほとんどでしょうが、絶対にこれはあります。


実はこれらのことは、僕が一番音ゲーをやっていた、去年の春~夏にかけて、よく母にこのようなことを言われたのです。
僕は僕の中で音ゲーを神格化していたので、絶対に信じようとしませんでした。
しかし、今、音ゲーと少しだけ距離を取り、冷静に過去の自分と音ゲーとの関係を見てみると、完全に麻薬と同じでした。
麻薬の悪循環のコラが話題になった時期がありましたが、本当にあんな感じでした。


将来の夢をかなえたい人、大人になったときの幸福度を高めたい人、死ぬときの後悔を少なくしたい人、
今すぐ自分と、自分の趣味との関係を冷静に見ましょう。


将来はどうでもいい、その時その時を楽しんだ者勝ちと思っている人はそれでいいです。
僕は人生を既に一回終えた人であったり、すべてを悟った人であったりするわけではないので、その考えが絶対不正解とは言い切れません。
ただ、世間的な不正解が正解な確率というのはいかほどなものか。


僕の将来の最終目標はKONAMI音ゲーを作るブランドであるBEMANIに就職することです。
KONAMIは多少ブラックであることも承知の上で、自分の大好きなものを自分で作る。
ぼくはそれに向けて努力をしています。
勉強、プログラミング。理想通りの努力はできていませんが、しっかり就職するときまでの将来設計を綿密に考えて行動しています。
また、KONAMIの人とのコネを作る面でも努力しています。BEMANIでそこそこ偉い人と飲みに行ったことがある人と知り合いになって、BEMANI中途採用で採用しやすい人の特徴を聞くことに成功しました。


夢がない人でも、目の前のテストや課題、小さな目標を達成することが、後の幸せにつながるのではないでしょうか。


5 最後に(これから)

なんかつらつらと面白くない上偉そうなこと語りましたすいません。
まぁ、要約すると「冷静に、客観的に自分を見たうえで行動しよう」っていうのが主な話で、他人と自分へのメッセージです。
また、小さな目標、大きな目標を達成できなかったり、予定通りに行動できなかったときに、もうダメなんだと思うのもやめましょう。
僕はそこがまだ苦手ですが、ポジティブに考えることができるように、だからといって楽観的になりすぎないように頑張っていきたいです。
とりあえず目の前の世界史のレポートを頑張ります。
まぁもうちょっと先のことまで話すと、冬休み競プロ頑張って春合宿行って春休み終わるまでに数学物理英語を少しだけ復習して~っていうのが予定上一番理想ですね。
長々とした記事最後まで見てくださりありがとうございました。

明日(といっても一時間もない)のProlabAdventCalendarはじゃくしーさん(@otama_jaccy)です。

SuperCon2015参加記

8/17~8/21にSuperCon2015の本選が開催されていました。
自分は幸猫さん(3年)、テラくん(1年)と共に「stairgr」というチームで参加していました。
同じ久留米高専から「WestDiv」という自分たちより強いチームも出ています。

↓「WestDiv」チームの一人であるうぃんじーのSuperCon参加記↓
winjii.hatenablog.com



8/16(競技開始前日)
福岡県→大阪府へ新幹線での移動です。3時間弱で着いたので驚きました。
到着後時間があったので、梅田駅に移動し、ヨドバシカメラジュンク堂に行きました。
正直、何も買わないつもりでしたが、ジュンク堂の数学関連の本が置いてあるあたりで一目惚れしてしまいました。

「鳩の巣原理」を用いた、面白い証明が載っている本です。数字パズルなどが好きな人は絶対好きだと思います。
ただ、この辺りの証明に詳しすぎると少し簡単すぎるかもしれません。僕には丁度いいです。まだ最後まで読んでいませんが、じっくりと読んでいきたいと思います。
その後は適当な店で食べてホテルに帰って寝ました。


8/17(競技1日目)
大学って広い。大学に入ってから目的地まで10~15分くらい歩いたような気がします。
受付の時点で問題が配られたので、待ち時間の間に問題を読みました。問題はこんな感じでした。
・化学振動がモデル。
・n*nのセル状に分割された盤面がある。
・各セルはそれぞれ、0,1,2,3,4のいずれかの状態である。
・各セルは周りのセルの状態により、次の状態(4の次は0とする)に変化したりしなかったりする。
・[全てのセルにおいて変化するかしないか判断する→変化する条件に当てはまったセルが変化する]の流れを1ステップとする。
・盤面の動きのモデルのことをCCAという。
[入力]
・最初の盤面
・写真(あるステップ数(100~50000の100刻み)進めた盤面の一部分。解像度が下げてある。)
[出力]
・写真は何ステップ進めた時にどこで撮られたものか。

この問題は、
・ステップを進める様子(CCA)をシミュレートする。
・盤面と写真の一致部分を探す。(パターンマッチング)
という二つの部分に分けることが出来る。
と問題文といっしょに書いてある「ポイント」という欄に書いてありました。

SuperConの特徴でもあるスーパーコンピュータ(スパコン)は、
阪大のスパコン「SX-ACE」。
並列化以外に、「ベクトル」という配列に対するループ文を高速に行う仕組みがありました。
並列化もベクトル化もほぼ自動でやってくれますが、それらが可能なコードを書かなければなりません。

競技時間になってから、自分たちのチームは、とりあえずしっかり考察をしようということになりました。
愚直にやったときの最悪計算量は、係数(2,1/8等)は無視で、
CCA:n*n*25(見るべき周りのセル)*50000(ステップ)
パターンマッチング:n^2*n^2*500(100ステップ毎のため)
と見積もりました。
ただ、パターンマッチングは、違う場所が見つかりしだい、breakすればいいので、そのbreakするタイミングがなるだけ早くなるように、確かめる場所の順番をバラバラにしようという話になりました。
CCAはn*n*25*50000は、n*nの部分を削るのは無理だという話になり、25(周りのセルを参照する回数)か50000(ステップ数)を短縮できるのではないかという話になった。
ここからは、具体的な解法もでたが、25の部分を25や25を上回ってしまう数になる解法ばかりで使えなかった。1文字もコードを書かずに1日目終了。
ホテルに帰ってからも考えるつもりだったが割と時間が遅くなってしまったのであまり何もしないで睡眠。


8/18~8/19(競技2~3日目)
幸猫さんがパターンマッチングの部分を実装している間、自分がCCAの部分のことを考えたりする。
そして2日目の午後くらい(違ったかもしれない)に色々思いつく。それまでは、幸猫さんがパターンマッチング、自分がCCAだったが、思いついた部分がそれぞれの逆だったので、仕事を交代する。
正直2日目の記憶は曖昧なので詳しくは書けない。
3日目は完全に方針が固まっていたので、固まった方針で実装をし始める。
方針
CCA:累積和でほぼ愚直に。
パターンマッチング:累積和と似たような方法で0の数を数え、全体と各列と各行の0の数があっていたら一致と判断。
CCAの担当になった幸猫さんはかなり速めに実装が終わったので、スパコンにCCAの部分のコードを投げて速い遅いの検討、高速化などをやる。
自分はパターンマッチングの部分をやっていたがバグらせまくり、作業時間の最後までバグり続ける。
バグってるが動いてはいたのでコードを印刷をしようとしていたのだが、自分が焦りすぎて、急いでUSBを抜いたところ、データが破損し、印刷できなくなる。
幸猫さんの最新バージョンのコードと自分のコード全てを印刷できずホテルに帰ることになる。ごめんなさい。
ホテルに帰り、自分はその日書いたはずのコードを全て書き直し、幸猫さんは最新バージョンを思い出しながら書き直す。
が、ここでも自分のパターンマッチングのコードがバグりまくる。
朝6時前くらいにやっと治る。CCAの部分の検討が終わり1時間30分程度仮眠を取った幸猫さんに統合を任せて自分は仮眠。
7:30くらいに起こされて自分のパターンマッチングがバグっていると告げられる。最悪の目覚めである。


8/20(競技4日目)
とりあえずホテルで書いたコードを印刷し、会場で写経したが、色々なバグが出る。
幸猫さんのCCAの部分が直ったのが確認できた後もバグっていたので、やはり、自分のパターンマッチングの部分がバグっている判明。
昨日書いて印刷できなかったコードのほうがバグが少ないと判断し、そっちのコードを統合してもらう。
それと同時にどこがバグっているか探していたがなかなかわからず。
色々いじくっているうちに直ったっぽい???ってなって統合したら直ったことが判明。どこがバグっていたかは今でも分からないです。
そしてこのタイミングが競技終了20分前です。
大きめのケースを投げたところ、CCAだけのときよりだいぶ遅くなっていることに気づいたが20分前だったので直せず。恐らく自分のコードになにか潜んでいたようです。


8/21(結果発表/懇談会)
結果

17位/20チーム
久留米高専から出たもう一つのチームは2位&企業賞をもらったので学校としては良かったのですが、自分たちのチームは散々でした。
この後反省すべきことを書きます。
懇談会では明石高専の人と交流できたのでよかったです。


反省点
[重要なこと]
・とりあえず実装する。(愚直解法でも)
 今回は、結局パターンマッチングは愚直解法で十分早く、CCAも、累積和など凝ったことをするよりは愚直にやったほうが速い結果となりました。
 いつもと違う実行環境でプログラミングをするので、何が速くて何が遅いか分かりません。実装してからなにが良いかを探りながらやっていく方がよいのだと感じました。
・わからないことはチューターさんなどに聞く。
 直接解法に触れること以外は教えてくれるチューターさんをうまく利用しなかったのは失敗でした。
 事前に渡されたベクトルに関する資料を読み込んだだけで、おおよそ分かったつもりになっていたのがいけなかったと思います。
・モチベが下がっても頑張る。
 自分のパターンマッチングのコードがバグりまくった時にモチベが下がり効率が落ちていました。そこで踏ん張る力は必要だと思います。
[さほど重要じゃないこと]
・英語力
 「USB抜き忘れないで!」を「USB刺しちゃダメ!」と和訳し間違えたのはまだしも、名づけに時間かかるのはアホだった。
・神経・脳・精神系の病気の人とエナジードリンクの相性
 ADHDなどの人がエナジードリンクを飲むと、逆に眠くなったり集中できなかったりすることがあるらしいです。
 自分はとても軽度の強迫性障害持ちですが、眠気は吹っ飛びましたが強迫性障害の症状は強くなり、集中力も吹っ飛んでいきました。


最後に
自分はSuperCon自体もあと一年あるし、他のコンテストもあります。今回は結果だけ見ると悲しい結果になってしまいましたが、様々な経験になりました。やはり、コンテストは参加するだけでも大きな意味があると思います。これからのコンテスト、特に来年のSuperConに今回の経験を活かしていきたいです。

初めまして

自分のプログラミングに対しての意識を高めるために便乗してブログ作りました。

このブログを頻繁に更新していけるように頑張りたいです。

よろしくお願いします。