procon 20111031
TRANSCRIPT
第2回社内プログラミングコンテスト
2011/10/31
みなさんお待ちかねの第2回プログラミングコンテストです!!
えっ!?・・・まあいいや。
基本的には第1回と同じですが、いくつか変更点があります。
前回の反省点と変更点
• 前回の反省点– 言語の得意・不得意が大きく影響した。
– 抜き打ちで実施したのがさらに影響を大きくした。
• 今回の変更点– 言語の得意・不得意による影響を最小限に抑える。
– 抜き打ちではなく、開催日時を事前に通知する。
• 具体的な改善策は以降のスライドにて。
変更点その1: 開催日と使用言語の事前通知
• 開催日は約2週間前に通知済みです。
• 使用する言語をPerlに限定することも通知済み。– 他の人とコードを比較しやすくするために言語を限定。
• 事前に通知したので、みなさん勉強済みですよね?– 基本構文と文字列関数を知っていれば解けるはず。
• 僕、Perlは苦手なんで・・・はNGで!!
変更点その2: 速さを競わない
• 解答の速さは評価しません。
–速く解けてもボーナスポイントは発生しません。
• Perlの得意・不得意が速さに影響するためです。
• ただし終了次第、ボスに報告してください。
–参考情報として、解けた人の順番を収集します。
変更点その3:Perlが無理ならコメントで• 頭の中にロジックはあるのにPerlで書けないなら・・・
– 以下のようにコメントを使ってロジックを表現してください。
• ただし、これはあくまで最終手段です。
変更点その4:問題は2問、解答時間は90分
• 問題が2問に、解答時間が90分に増えます。– 問題1が完了した人から問題2に進むことができます。
– 問題1が完了するまで問題2を見ることはできません。
– 問題1をスキップするのはNGです。
変更点その5:異常入力は考慮不要
• 異常入力の考慮や対応コードは不要とします。
–評価ポイントをメインロジックに絞り込むためです。
–問題に書かれている仕様だけを充たせばOKです。
ここからは前回から変わらない点です。
前回から変わらない点:解答時
• ターミナル上で動作するプログラムを作成。– Windowsであればコマンドプロンプト上で動作させる。
• インターネット・書籍の利用はOK。– ただし、解答例そのものを検索するのはNG。
– メインロジックを不要にするライブラリの検索&使用もNG。
前回から変わらない点:評価時
• 説明する人
– 動作確認とプログラムの説明をする。
– 同じような問題を解いたことがあれば自主申告する。
– 制限時間は5分間。
• 評価する人
– 気に入ったプログラム上位3本を決める。
– 気に入った理由も記述する。
– 自分で自分に投票してもよい。
– 1位=3点、2位=2点、3位=1点。合計点が高い人が優勝。
前回から変わらない点:コンテストの目的
• 自分のスキルを相対的に評価する。– 課題が同じなので相対的な評価が可能。– 実務では同じ課題に同時に取り組むことはない。
• 他人のロジックやコードから新しい発見を得る。– 良いコード、悪いコード(?)に関する知識を深める。
• 良い意味でメンバー内の競争心をあおる。– チームワークがいい = みんな同じスキル、ではない。– 負けたくない、一番になりたいという気持ちも大事!
説明はここまでです。何か質問はありませんか?
それでは開始!
問題1:Excel列名変換問題
• 仕様–入力されたアルファベットを数字に変換する
• 変換ルールはExcelの列名と同等。
• 例) A=1、B=2、Z=26、AA=27、XFD=16384
• 起動時引数– [0] アルファベット (A~ZZZZ…[上限なし])
• 実行例– ExcelColConv.pl A → 1
– ExcelColConv.pl AA → 27
問題2:Excel列名変換問題(逆変換)
• 仕様–入力された数字をアルファベットに変換する。
• ただし、問題1で作ったプログラムを拡張すること。
• 起動時引数– [0] 0=数字へ変換、1=アルファベットへ変換
– [1] アルファベットまたは数字 (上限なし)
• 実行例
– ExcelColConv.pl 0 AA → 27
– ExcelColConv.pl 1 27 → AA
はい、そこまで!
動作確認&説明タイム
説明する人
• 動作確認
– こちらが提示する引数を与えて実行してください。
• プログラムの説明
– どんなロジックで書いたのか説明してください。
– 何かアピールポイントがあればそれも説明してください。
– 同じ問題を解いたことがあれば自主申告してください。
• 制限時間は5分です。
– オーバーしたら打ち切ります。
評価する人
• 良いと思ったプログラマ3人を選んでください。
–投票用紙を配ります。
• 3人に順位を付けてください。
• どういう点が良いと思ったのか理由を付けてください。
• 自分=最強、それもアリです。
• 時間があまりないので質問は原則無しとします。
評価ポイント
• バグが無いか?
• 読みやすいか?– インデント、変数名、関数名、コメント、etc
• 保守しやすいか?– コードの重複が無い、変更に強い、etc
• 実行効率が良いか?– 実行速度が速い、メモリの使用量が少ない、etc
• その他、あなたの感性で。
それでは開始!
投票タイム
評価する人(再)
• 良いと思ったプログラマ3人を選んでください。
–投票用紙を配ります。
• 3人に順位を付けてください。
• どういう点が良いと思ったのか理由を付けてください。
• 自分=最強、それもアリです。
• 時間があまりないので質問は原則無しとします。
では開票します!
優勝したのは・・・??XXXさん!!
それでは第3回プログラミングコンテストでお会いしましょう~!
完