基本的な知識だけでプログラムは組めるのですが,処理を実際に組み立てるのは相当考える必要があります.そのため,適宜フローチャートをお見せすることにします.
英語,数学,物理のテストの点数を乱数を用いて1から100の範囲の整数で発生させますが,それを10人分用意して表示します.次に,合計点の高い順に並べ替えて表示するプログラムを作成しましょう.
No. Eng Math Phys Total 1 2 44 81 127 2 41 50 12 103 3 98 62 14 174 4 35 98 16 149 5 27 57 32 116 6 74 99 37 210 7 94 43 78 215 8 59 44 42 145 9 28 20 58 106 10 75 40 1 116 No. Eng Math Phys Total 7 94 43 78 215 6 74 99 37 210 3 98 62 14 174 4 35 98 16 149 8 59 44 42 145 1 2 44 81 127 5 27 57 32 116 10 75 40 1 116 9 28 20 58 106 2 41 50 12 103 |
解答例
スーパーなどで袋詰めされたピーマンを見たことがあると思います.大体4個くらい入っているのが通常ですが,そこに詰められているピーマンの合計の重量はほとんど同じになっています.それを実現しているのは,いくつか機種によって違いはありますが,基本的には12個をランダムに取り出して,その中から合計が指定された重量になる4個を選び出して抜き取り袋詰めをし,空いたところにまたピーマンを入れてという作業を繰り返して,同じ重量の袋を次々に作っています.
上記の操作をシミュレートするプログラムを作成してみましょう.40から60の整数を乱数により12個発生させ,その中の4個の合計が200になる組み合わせを選ぶことを行うプログラムを作りましょう.
Weight of 12 green peppers: 44 43 43 51 55 47 45 56 56 43 57 46 Selected: 44 43 56 57 --> 200g |
コミックの「はじめアルゴリズム」の第1巻で紹介されている「カプレカ数」の探索を行ってみましょう.4桁の正の整数を乱数により発生させ,その数に含まれる数字を大きい順に並べ替えたものと小さい順に並べ替えたものを作ります.そして,大きい数から小さい数を引いて,その答えの数も同様に大きい順と小さい順に並べ替えて引き算する,ということを繰り返すと,必ずある数に収束するというもので,その収束した数をカプレカ数と言います.
Original number: 5182 8521 - 1258 = 7263 7632 - 2367 = 5265 6552 - 2556 = 3996 9963 - 3699 = 6264 6642 - 2466 = 4176 ・ ・ ・ 略 ・ ・ Kaprekar number with 4 digits: **** |
解答例手順はおよそ以下のようになります. 1.4桁の乱数発生 2.while()文開始(新しい数と一つ前の数が違うと真) 3.一つ前の数を入れる変数に入れておく 3.位取りによる数字の取り出しとリスト化 4.リストの要素の並べ替え 5.2個の4桁の整数合成 6.引き算 7.差を新しい4桁の数にする 8.3.の作業に戻る
そうとう難しいので,いろいろ考えてみてください.