研究帖28-8

 

 

 

 


作者へのメッセージ
研究課題 余りをどうするか

研究課題 余りをどうするか

 

   

BB君その1今日の所は退却だーーーーーーーーーーーーー!!

BB君その2こらまてーーーーーーーーーーーーーーーーー!!

 

   

 

ナイス博士「おいっ!パソ山さん!!大丈夫か?」

そよ風さん「パソ山さん、大丈夫!!?」

  

パソ山さん「スヤスヤ...スヤスヤ......zzzz...zzz..」

ナイス博士「何時ものように、ぐっすり寝ているぞ。」

そよ風さん「どうやら大丈夫そうですね。」

 

     

BB君「いやあ、また逃げられてしまった、残念、残念。」

そよ風さん「あっ、BB君、さっきのはブラック博士なの?」

BB君「うん、もうちょっとで捕まえられそうだったんだが、突然消えてしまったんだ。」

ナイス博士「なにっ、消えたって!!、BB君、いったいどう言う事なんだ?」

BB君「出口に向かって走っていったのを見て、追いかけたんですが、突然消えたんです!」

そよ風さん「まさか、消えるわけ無いわ!」

BB君「いや、曲がり角を曲がった所で見えなくなって、追いかけて曲がったら、 誰もいなかったんだ。」

ナイス博士「ほう、それは不思議だな。」

BB君「ええ、で、下にこの紙切れが落ちていました。」

ナイス博士「ほほう、なになに、数字が書いてあるぞ。....813と書いてあるな。」

そよ風さん「どれどれっ、なるほど。何の数字でしょうね。」

 

     

 

ナイス博士「ところで、さっき出かける時に、ブラック博士の情報が入ったと、 言ってたじゃないか。」

BB君「それが、ニセ情報だったんです。」

ナイス博士「ニセ偽情報だって!」

BB君「ええ、署に帰る途中で確認の電話を入れると、だれもそんな連絡はしていないって 言われたんです。」

そよ風さん「じゃあ、ブラック博士がBB君をおびき出しておいて、ここに来たのかしら。」

ナイス博士「多分そうだろうな。でも、いったい何のためだろう?」

BB君「パソ山さんに、何かしに来たんじゃないですか?」

ナイス博士「いや、何も変な事をした形跡は無いんだ。」

BB君「そうですか。不思議ですねえ。」

 

     

 

ナイス博士「ところで、今回明らかになった重大な欠陥をどうしようか。」

BB君「何ですか、重大な欠陥って?」

ナイス博士「実は、こういう訳なんだ。」

BB君「ほほう、そんな重大な欠陥があったんですか。すごい!さすがブラック博士だ! 良く見つけたな。わっはっはっはっ

そよ風さん「ちょっと、何笑ってるのよ!!

BB君「なっ、何を言ってるんだ!だれも笑ってなんかいないよ!」

そよ風さん「何よ!大声で笑ってたじゃない!しらじらしいわね!!」

ナイス博士よしなさい!!まったく、どうして君たちはいつもこうなんだ。喧嘩 ばかりしてないで、もっと研究に集中しなさい!!...........しかし、どうしたら良いかな?」

BB君「途中に余りが出てくると、とたんに処理が遅くなるんですね?」

ナイス博士「うん、そうなんだよ。」

そよ風さんそうだ!!!!

ナイス博士「なんだ!何か思いついたかい?」

そよ風さん余りを先に処理したら良いんだわ!!

ナイス博士、BB君「先に処理する!??」

 

*************************************************************************

【先処理方式】

1.ArrayListを2つ用意する。

2.切り取る木材の長さを全部合計し、原材料の長さで割った余りを出す。

3.余りにぴったりの組み合わせを1つ作ってArrayListの1つに入れる。

4.残りは全部ぴったりの組み合わせなので、もう1つのArrayListに記録する。

*************************************************************************

 

そよ風さん「だからたとえば、原材料が10で、製品が{3,4,6,8,2}なら、 余りの3を先に処理して、残りの{4,6}{8,2}を、後から処理するわけよ。」

BB君「いや、ちょっと待ってくれ。もし製品が{9,3,4,6,8,2}だと、余りの2を先に 処理して、残りが{9,3,4,6,8}だから、ぴったりの組み合わせが{4,6}だけしか出来ないぞ!」

そよ風さんうっ...!!

ナイス博士「じゃあ、その場合は{9,3}を先に処理して、残りを後で処理すればいいんだな。」

BB君「そうですけど、計算では余りが12ではなくて2になってしまうんです。」

ナイス博士「そうか。.....まてよ...」

そよ風さん「何ですか?」

ナイス博士「残りが{9,3,4,6,8}と言う事は、残りの合計が30になる訳だな。」

BB君「そうですねえ.....」

ナイス博士「だから、余りと組み合わせの合計を増やしながら、何回も処理すればいいんだ!!」

 

*************************************************************************

【先処理方式2】

1.材料の長さの配列がArrayListを2つ用意する。

2.切り取る木材の長さを全部合計し、原材料の長さで割った余りを出す。

3.余りにぴったりの組み合わせを1つ作ってArrayListの1つに入れる。

4.残りからぴったりの組み合わせを作る。出来たら、もう1つのArrayListに記録する。

5.原材料にぴったりの組み合わせが作れない要素があれば、原材料の整数倍の組み合わせが 出来るまで、原材料の長さを足して繰り返す。

6.出来たら、余り用のArrayListに記録する。

7.全部出来たら、余り用のArrayListから新しい配列を作る。

8.余りに原材料の長さを足して、新しい余りとする。

9.3.以下の処理を繰り返す。

10.余り用のArrayListの大きさが変わらなくなるまで繰り返す。

*************************************************************************

 

BB君「うーーん、良くわからないなあ...」

ナイス博士「日本語で書くと分り難いなあ。実例を書いて見よう。」

 

*************************************************************************

【先処理方式2の実例】

1.製品の長さの配列が{9,8,8,8,6,4,4,3,2}で、原材料の長さが10だとする。

2.長さの合計が52なので、余り2をArrayListの1つに入れる。

3.残り{9,8,8,8,6,4,4,3}で、9を使った10にぴったりの組み合わせが出来ない!

4.原材料の長さをループで足して、20になったとき、{9,8,3}が出来る。

5.これを余りと同じArrayListに記録する。

6.残り{8,8,6,4,4}から、{8,8,4}が同じ過程で余り用のArrayListに入る。

7.最後の{6,4}が、処理済用の別のArrayListに入る。

8.余り用のArrayListから、新しい配列{9,8,8,8,4,3,2}を作る。

9.余り210を足して、余りを12にする。

10.配列{9,8,8,8,4,3,2}から、{9,3}を余り用のArrayListに入れる。

11.残り{8,8,8,4,2}から{8,2}が、処理済用のArrayListに入る。

12.{8,8,4}が余りと同じArrayListに入れる。

13.余り用のArrayListから、新しい配列{9,8,8,4,3}を作る。

14.もう1回繰り返しても余り用のArrayListの大きさは変わらないので、終わる。

15.結果として{6,4}{8,2}{9,8,8,4,3}の組み合わせが出来る。

*************************************************************************

 

     

ナイス博士「答えは合っているだろう?」

BB君「ええ、でも、処理速度はどうかなあ。」

ナイス博士「そうだな。まあ、コードを書いて試してみよう。」

そよ風さん「ええ、そうですね。」

 

続く。

 

」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」」

 

作者へのメッセージ

 

研究課題に戻る。

 見学者への注意事項に戻る。