エンジニアのスキルを試すコードパズル ─この問題,あなたは解けますか?
第8回 宝くじでひと山当てるプログラムをPythonで作るには?─辻真吾からの問題
問題
購入者が数字を選択できる,
一度の開催で20万~30万口売れているようです。集まったお金の40%は主催者の取り分です。残りの60%が当籤金として支払われます。これを
抽選によって,
- 選んだ5つの数字がすべて当たりと一致した場合⇒ 1等
- 4つの数字が一致した場合⇒ 2等
- 3つの数字が一致した場合⇒ 3等
当籤準備金は,
- 1等⇒ 当籤準備金の半分
- 2等⇒ 当籤準備金の1/
3 - 3等⇒ 当籤準備金の1/
6
それぞれ該当者がいない場合は,
このLOTO-Gを1回開催するプログラムを,
何口売れるか,
20万~30万口という幅の中から, それらしい数字が選ばれるような仕組みを考えてみてください。 決定した口数分の仮想の売り上げを作り出してください。このとき,
1つの数字の組が何口か売れることもあることに注意してください。 また,
1人の購入者としてくじを楽しむために, あらかじめ決めた数字と口数をこれに加えます。これはプログラムへの実行時の引数として渡してください。 当たりの数字を決めたら,
次の項目を出力してプログラムを終了してください。 - 全体の売り上げ金額
- 主催者の取り分
- 当たりの数字
- 1等から3等までの当籤口数と当籤金額
- あらかじめ選んだ数字の当籤状況
プログラムは,
- 難易度
- ★☆☆☆
(当該領域で, 基礎的なことができれば解けると思われるレベル) - 言語/領域
(Perl, Pythonなど) - Python
- 解答形式
ファイルアップロード形式
- 解答評価のポイント
- Pythonにはあらかじめ有用なライブラリが多数そろっています。それらを活用してより簡潔なコードで,
見やすい出力を作れるかチャレンジしてみてください。 - 挑戦を開始する前にご準備いただきたいもの
解答は,
テキストファイルを解答画面からアップロードしていただきます。Pythonのコーディングに適したエディタを使って書いたコードをテキストファイルに貼り付けて提出してください。あらかじめ 「設問1. txt」 とテキストファイルを作成しておくと, スムーズです。事前にご準備ください。 - その他注意事項
- 一度挑戦を開始すると,
解答を送信しなかった場合でも, 1回目のチャレンジは終了となります。 - 何度でも挑戦できます。
- 白紙に近いなど,
採点不能なものは, フィードバックいたしかねます。 - この問題の正解およびコードレビューは,
技術評論社のサイト (この連載上) にて掲載します。 - 優秀な解答をした人や面白解答した人はニックネーム,
解答内容, 解答フィードバック内容を公開させていただく可能性があります。ご了承ください。
- 一度挑戦を開始すると,
- 解答受付先
- https://
codeiq. jp/ ace/ tsuji_ shingo/ q182 - 掲載期間
(開始~終了) - 1月25日
(金) 午前10時~2月8日 (金) 午前10時 - 採点可能人数
- 50人
- 想定時間
(分) - 30分~
- 制限時間
- なし