chigichan24のお気持ち表明

イケてるエンジニアになりたい.

ICPC2017国内予選

今更感がありますが,つらつらと書きます.

チーム

チーム名 shohachiro 勘のいい皆さんならわかる名前,使用料とか払わなくて良いのか震えてる.

kusohakoさん.

  • 高専時代からの先輩.
  • つよい.
  • 公用語OCaml
  • 自称,実装するとすぐバグらせる.

Pelkiraくん

  • 高専時代からの同期
  • つよい.
  • 考察をいい感じにしてくれる.
  • 幾何がつよい.

chigichan24

  • 大学に入ってから競技を始めた(実質)
  • 椅子を温めるのと,お茶くみ担当.
  • 自称,トイレに行くとひらめく.

当日まで

何度か練習をする.krm特有のノリで回を重ねるごとに連携がいい感じにウェイしてるのがわかる.

作戦

kusohakoさんは実装するとバグらせるが考察とデバッグは神なので,そういうふうに動いてもらってひょいってACしていく?

当日

  • 練習でMを通せと強いられるがつらいのでパス.
  • 実験をはやめに切り上げる.

はじまるちょっと前

わ〜いって高揚してた.

A

担当 : chigichan24

ICPC特有の問題文が水増しされているが,適当に流し読みすると明らかにやるだけ. その間に印刷して,kusohakoさんがB,それより後ろをPelkiraくんが読む. 実装していたら,書いたvimrcが壊れててtabが効かない.キレたので,spaceを連打することで乗り切る. サンプルあったので出す -> AC(7:57)

B

担当 : kusohako

PelkiraくんからCを投げられる.読んでみる.制約が雑魚なのでやるだけ.

Bをやるだけと言っていたkusohakoさんが,バグらせてた. helpにいったらsampleのコピペミスをしていたのを自慢のデバッグ力で解決してた(自己解決). なんやかんやでAC(29:14)

C

担当 : chigichan24

やるだけだったので,適当に実装する.一昨年はCでバグらせまくって戦犯になって怖かったので, よこにPelkiraくんを配置して,私の「これで大丈夫だよね?」を聞いてもらう. とりあえず書き上げてsampleを通したらなんか全部あってたので,submit -> AC(42:14)

三人で話し合うフェーズ

Dは正直詰められていなかったが,わんちゃんmapでメモして通るのでは?みたいな希望があったのでどうせPCが空いてるなら実装するか みたいな機運になったのでchigichan24が実装を始めるが,なんか実装が下手だったのでkusohakoさんとチェンジ.map<bitset<N*M>, int>解法を 書く. その間にPelkiraくんと私でDの考察を進めると, N \times M \leq 500 の制約を使って N Mが小さい方を採用しながら指数オーダーの計算をすれば 行けそう感があることを伝える.

D

担当 : kusohako

行けそう感があることを伝えに行ったら,とりあえず書いたやつがsample通ったと言っていたので,試しにtestcase1を入れてみると,数秒待ったら 解がでて,三人で「ふぁっ!?」てなりながらも提出 -> WA

コードを見たけど変なところを見つけれないなぁとかおもってたら,kusohakoさんが自慢のデバッグ力で自分のコードのバグを見つける(自己解決2回目)していた. そのまま提出しようとしていたので,diffコマンドを教えてあげる. diffで何も出なくて笑う.

そうこうしてたらなんやかんやでkusohakoさんが自慢のデバッグ力で自分のコードのバグを見つける(自己解決3回目).diffもちゃんと出たので提出->AC(1:36:39)

喜ぶフェーズ

わ〜い.krm特有のノリで喜ぶ.

考えるフェーズ

Eは構文解析は本質ではない.らしい. Fは規則性がありそうで,実験をする. Hは幾何強Pelkiraが,多少の考察をしていたけど流石にこの時点で手をだすべきではない.

という結論で,とりあえずみんなでEを考えるが,よくわからないので,私とPelkiraでFの考察を進める. とりあえずPCが空いてたので,inputとかそこらへんを書いておく.

ひらめくフェーズ

Eはなんか微妙だったが,Fはi,jの数字をbit表現したときに操作番目とbitの変化する位置に関係があることを突き止めたので,Pelkiraが実装を始める. この時点でのこり30分くらいだったのでEは諦めてFにみんなで取り組む.

F

担当 : Pelkira

実装そのものはすごく単純化されているのですぐ終わるが,考察に穴があって,iを固定しているときしか考えていなかった. ただ,iが固定でなくても,そこまで重くならないと分かったが,残り5分くらいだったのでタイムアップ.

眺めるフェーズ

kusohakoさんは観賞用の問題を見てた.

Pelkiraくんと私は,順位表を眺めてた.

おわり

おわった.振り返ると4AC(1WA). f:id:chigichan24:20170716180520p:plain なぜか大学内で一番上だった. 学内で4完で競っていた.謎.

懇親会的な何か

nuipさんが来てて,G簡単だったよと言っていて問題を見なかったことを後悔. Eは制約を見落としていて反省. ほかの4完チームはEやGを狙っていたらしい. Dの解法が不正と言われる.わかる.ACをとれば正義. 先生方のいろんな話が面白かった.

感想

  • 私は結構楽しかった.
  • なにもしてないので流石にAsiaまでには精進する.
  • lamaltettaに負けたのがあれ.

つくば旅行楽しみだなぁ.

プロラボに5年間在籍して学んだこと

この記事はprolab Advent Calendar 2016の2日目の記事として書いています.

はじめにを読む前に

現在深刻な人材不足です.よろしくお願いします.

www.adventar.org

はじめに

変な事言ってる老害もいるなぁくらいの感じで軽く読んじゃってください.
あと色味がなくて読みにくいです.ごめんなさい.

お前は誰だと思った方

どうも初めまして.chigichan24と申します.プログラミングと老害をやってます.ICT委員会が好きです.趣味はたべることです.

この記事の目的

プロラボの未来を語る記事であり,私のダメダメのプロラボ人生を反面教師に現役生に頑張ってもらいたいとの思い.

5年間を振り返る

恥の多い生涯を送って来ました。 太宰治人間失格』より


ちなみに人間失格青空文庫公開されているので興味がある人は読むといいと思う.


意欲だけは人一倍あったつもりだけど,それに対する努力が誰よりもできていないのでこうなった.と思っている.
意欲だけのやつは一番厄介だ.

競技プログラミング

1年生のときに競技プログラミングにハマった.私はまずタイピングが出来なかった*1.なのでアルゴリズム力と典型力で殴ろうと早い段階で決めてた.AOJを必死に解いた.だけど人一倍努力ができないとダメと中学校の経験から分かっていたのにできなかった.1年生のJOI前までにAOJを100問ほど解いていたが,そんな半端な量ではダメだと自分が一番分かっていた.


競技プログラミングは好きだったが,努力が出来なかった.
まわりもそこまでのめり込んでなかったように感じていた.
周りがTopcoderに出るなら自分も出ようとなったが,Codeforcesには出てくれないし,ましてやAtCoderはまだそこまでメジャーじゃなかった時代.周りがやらないからといってサボってしまった.弱い自分であった.


結果としてJOI本選に出ることなく終わった.


これが自分の中で引き金となってより一層競技プログラミングから離れた.好きではあるが努力ができない.時たまやってみようと思うことはあっても結局努力が続かない.これを今も引きずっている.


そして,努力をしない自分をほっぽりだして,中学生のときから競技をしていたら少しは結果が変わっていたのか?と環境を羨んだ.これは大きな間違いである.

教訓1

周りのせいにせず,自分の芯を貫いて努力を続けたもののみが喜びの境地に達することができる.


環境を羨んだ理由に,数年競技プログラミングを続けているとだんだんと,解ける問題も増えてきたということがある.
私は周りの人々に比べて理解力が数段回遅い.そのためなのかなんなのか詳細は不明だが,3年生くらいの時にはJOIの本選も突破できそうなくらいには力が付いていた(と錯覚していた).


そこで私は,後輩にこの2年間で学んだことを全部詰め込もうと決め,必死に後輩育成をした.


さっちー,うぃんじー,らて,っこ あたりに一生懸命教えた.


結果として後輩達は大会の本選に出るという結果をだしていた.


しかし,自分の力は伸びることはなかった.inputしなかったからだ.この時期は新しい知識を入れていなかった.それでは伸びるはずはない.

教訓2

学ぶことを拒んではいけない.常に新しい知識をinputする.


よく,本番に弱いと周りに言われていたし,自分もそれは自覚していた.ただそれは真の力が付いていなかった証拠であり,それを自覚しながらも改善しなかった自分が一番悪いのだ.


本当にプログラミングラボ部で競技を学ぼうとした者として恥である.先代の方々には本当に本当にごめんなさいの気持ちです.

開発編

私は,大会駆動形の勉強をしてきた.◯◯の大会があるからこの言語を習得しなければ...といった調子だ.


なので,言語だけは書けるようになった.だけど何かが足りない.


それは,言語への深い理解と特定の言語での開発経験の浅さである.


大会が終わったらその言語を学ばない.また,オフシーズン*2を作らずに,常に大会に出続けようとしてしまったがために,学ぶということを競技プログラミングと同様に捨てて,逃げてしまった.

教訓3

ただがむしゃらに走り続けるのは頭が悪い,じっくり学ぶ期間を作り,言語愛を育む.

5年間で形成されたchigichan24とは?


ここまで私の苦い経験を連ねてきた.これに全部該当するようなダメ人間はいないと思うが,ひょっとすると一部が当てはまるという人もいるかもしれない.そういう人はこの記事を通して変わることが求められているのかもしれない.そこは各人で判断してほしい.



プロラボを通して形成されたchigichan24は結局のところ


競技プログラミングが少しだけできる.
  -Div1,2をふらふらする程度
  -データ構造がちょっと分かる.


・言語はそれなりに扱ってきたが,深い知識はない.
  -言語 C,C++C#Java(Android),PythonPHPjavascript(やその他typescript),Ruby,Goなど...
  -ライブラリとか .NETFramework,WindowsDriverKit,openCV,Unityなど...


・大会や勉強会に挑戦するだけした(本選に行ったことがあるのは僅か)ので,ジャンルだけは理解できている.
  -JOI,PCK,SuperConICPC高専プロコン競技,高専プロコン自由,ImagineCup,その他アプリコンテストとか
  -TopCoderCodeforcesAtCoderGCJとか
  -JOIss,セキュリティミニキャンプとか


・アイデア出しやプレゼン資料作成,及びプレゼンが少しだけできる.

  
車輪の再発明とか不要なゴミツールを吐き出した.
  -今思えば,いろいろおもしろいもの作ってきてたし,きちんと保存しておけばよかった(GitHubなどで公開しておけばよかった).
  -思い入れがあるのは,マウスの動作と逆方向にバーが動くブロック崩し.すごい脳トレになる.
  -Twitterに関するツールはいろいろ作ったなぁ.


なんとも中途半端な人間だ.みんなにはなんの特徴もないこんな人材になってほしくない.
けど,今になって振り返ると本当に多ジャンルに手を出したなぁ.意欲だけはあったと言える.


ただ唯一自分が誇れるのは,内,外関係なく多方面と交流をしてきたこと.

部内LTやブログ,Twitter,大会後のオフ会?で積極的に意見交換をしよう.


そして,手を動かすことを拒まないでください.車輪の再発明が目標になってもいい.とにかく手を動かさないと思い描いたものはできません.手を動かしてからじゃないとわからないこともたくさんあります.


これらの教訓などが老害アドベントカレンダーを通して伝えたかったことである.
(本当は車輪の再発明は時と場合によってうぇいみたいな記事を書こうとしていたはずなのにいつの間にか大反省会になっていた)


おわりに

プログラミングラボ部は最強集団であり続けなければならないです.
それは競技力はもちろん,個々の技術力,開発力,チームとしての力もそうです.

自分にはその一員となることはできませんでした.胸張ってプロラボ部員だとは到底言えないです.

colunさん,wosugiさん,lyozさん,hyonさん,natriumさん,nikollsonさん,ichigo_o_reさん等(他にもいっぱいいます)たくさんの先代達が作り上げてきた最強集団を途絶えさせないように日々進化していってください.


私は本当にプロラボが好きです.

私は,みんなを外からひっそりと応援しています(老).



明日は@wing3196君です.とてもおもしろく,また有用な記事を書いてくれます.皆さん期待しましょう.

*1:リアルに人差し指タイピング

*2:オフシーズンとは,高専プロコンが終わる10月頃から翌年の4月頃までの期間を指すと勝手に思ってる.

同じ学校に通い続けてはじめて分かったこと

こんばんは.chigichan24です.
今回はプログラミングとか全く関係ないお話.雑記.

続きを読む