procon 20111031

30
2回社内プログラミングコンテスト 2011/10/31

Upload: junichi-ito

Post on 03-Jul-2015

6.234 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Procon 20111031

第2回社内プログラミングコンテスト

2011/10/31

Page 2: Procon 20111031

みなさんお待ちかねの第2回プログラミングコンテストです!!

Page 3: Procon 20111031

えっ!?・・・まあいいや。

Page 4: Procon 20111031

基本的には第1回と同じですが、いくつか変更点があります。

Page 5: Procon 20111031

前回の反省点と変更点

• 前回の反省点– 言語の得意・不得意が大きく影響した。

– 抜き打ちで実施したのがさらに影響を大きくした。

• 今回の変更点– 言語の得意・不得意による影響を最小限に抑える。

– 抜き打ちではなく、開催日時を事前に通知する。

• 具体的な改善策は以降のスライドにて。

Page 6: Procon 20111031

変更点その1: 開催日と使用言語の事前通知

• 開催日は約2週間前に通知済みです。

• 使用する言語をPerlに限定することも通知済み。– 他の人とコードを比較しやすくするために言語を限定。

• 事前に通知したので、みなさん勉強済みですよね?– 基本構文と文字列関数を知っていれば解けるはず。

• 僕、Perlは苦手なんで・・・はNGで!!

Page 7: Procon 20111031

変更点その2: 速さを競わない

• 解答の速さは評価しません。

–速く解けてもボーナスポイントは発生しません。

• Perlの得意・不得意が速さに影響するためです。

• ただし終了次第、ボスに報告してください。

–参考情報として、解けた人の順番を収集します。

Page 8: Procon 20111031

変更点その3:Perlが無理ならコメントで• 頭の中にロジックはあるのにPerlで書けないなら・・・

– 以下のようにコメントを使ってロジックを表現してください。

• ただし、これはあくまで最終手段です。

Page 9: Procon 20111031

変更点その4:問題は2問、解答時間は90分

• 問題が2問に、解答時間が90分に増えます。– 問題1が完了した人から問題2に進むことができます。

– 問題1が完了するまで問題2を見ることはできません。

– 問題1をスキップするのはNGです。

Page 10: Procon 20111031

変更点その5:異常入力は考慮不要

• 異常入力の考慮や対応コードは不要とします。

–評価ポイントをメインロジックに絞り込むためです。

–問題に書かれている仕様だけを充たせばOKです。

Page 11: Procon 20111031

ここからは前回から変わらない点です。

Page 12: Procon 20111031

前回から変わらない点:解答時

• ターミナル上で動作するプログラムを作成。– Windowsであればコマンドプロンプト上で動作させる。

• インターネット・書籍の利用はOK。– ただし、解答例そのものを検索するのはNG。

– メインロジックを不要にするライブラリの検索&使用もNG。

Page 13: Procon 20111031

前回から変わらない点:評価時

• 説明する人

– 動作確認とプログラムの説明をする。

– 同じような問題を解いたことがあれば自主申告する。

– 制限時間は5分間。

• 評価する人

– 気に入ったプログラム上位3本を決める。

– 気に入った理由も記述する。

– 自分で自分に投票してもよい。

– 1位=3点、2位=2点、3位=1点。合計点が高い人が優勝。

Page 14: Procon 20111031

前回から変わらない点:コンテストの目的

• 自分のスキルを相対的に評価する。– 課題が同じなので相対的な評価が可能。– 実務では同じ課題に同時に取り組むことはない。

• 他人のロジックやコードから新しい発見を得る。– 良いコード、悪いコード(?)に関する知識を深める。

• 良い意味でメンバー内の競争心をあおる。– チームワークがいい = みんな同じスキル、ではない。– 負けたくない、一番になりたいという気持ちも大事!

Page 15: Procon 20111031

説明はここまでです。何か質問はありませんか?

Page 16: Procon 20111031

それでは開始!

Page 17: Procon 20111031

問題1:Excel列名変換問題

• 仕様–入力されたアルファベットを数字に変換する

• 変換ルールはExcelの列名と同等。

• 例) A=1、B=2、Z=26、AA=27、XFD=16384

• 起動時引数– [0] アルファベット (A~ZZZZ…[上限なし])

• 実行例– ExcelColConv.pl A → 1

– ExcelColConv.pl AA → 27

Page 18: Procon 20111031

問題2:Excel列名変換問題(逆変換)

• 仕様–入力された数字をアルファベットに変換する。

• ただし、問題1で作ったプログラムを拡張すること。

• 起動時引数– [0] 0=数字へ変換、1=アルファベットへ変換

– [1] アルファベットまたは数字 (上限なし)

• 実行例

– ExcelColConv.pl 0 AA → 27

– ExcelColConv.pl 1 27 → AA

Page 19: Procon 20111031

はい、そこまで!

Page 20: Procon 20111031

動作確認&説明タイム

Page 21: Procon 20111031

説明する人

• 動作確認

– こちらが提示する引数を与えて実行してください。

• プログラムの説明

– どんなロジックで書いたのか説明してください。

– 何かアピールポイントがあればそれも説明してください。

– 同じ問題を解いたことがあれば自主申告してください。

• 制限時間は5分です。

– オーバーしたら打ち切ります。

Page 22: Procon 20111031

評価する人

• 良いと思ったプログラマ3人を選んでください。

–投票用紙を配ります。

• 3人に順位を付けてください。

• どういう点が良いと思ったのか理由を付けてください。

• 自分=最強、それもアリです。

• 時間があまりないので質問は原則無しとします。

Page 23: Procon 20111031

評価ポイント

• バグが無いか?

• 読みやすいか?– インデント、変数名、関数名、コメント、etc

• 保守しやすいか?– コードの重複が無い、変更に強い、etc

• 実行効率が良いか?– 実行速度が速い、メモリの使用量が少ない、etc

• その他、あなたの感性で。

Page 24: Procon 20111031

それでは開始!

Page 25: Procon 20111031

投票タイム

Page 26: Procon 20111031

評価する人(再)

• 良いと思ったプログラマ3人を選んでください。

–投票用紙を配ります。

• 3人に順位を付けてください。

• どういう点が良いと思ったのか理由を付けてください。

• 自分=最強、それもアリです。

• 時間があまりないので質問は原則無しとします。

Page 27: Procon 20111031

では開票します!

Page 28: Procon 20111031

優勝したのは・・・??XXXさん!!

Page 29: Procon 20111031

それでは第3回プログラミングコンテストでお会いしましょう~!

Page 30: Procon 20111031