« ガ | トップページ | ヒガンバナ »

2016年5月19日 (木)

「10をつくる」プログラム編

http://yamada-kuebiko.cocolog-nifty.com/blog/2016/05/post-0aa6.html
2016年5月10日 (火)「四則演算だけで10にしてください(10を作る)」

http://yamada-kuebiko.cocolog-nifty.com/blog/2016/05/post-9058.html
2016年5月12日 (木)「四則演算だけで10にしてください(10を作る):解答編」
↑こう続いてきましたが、10日の記事で

0を含まず、重複のない4つの数字からは必ず10が作れます。
これはパソコンで、全数チェックしましたから大丈夫。安心して取り組んでください。

↑こう書きました。
「0を含まず、重複のない4つの数字」というのはどのくらいあるものなんでしょう?
これは「組み合わせ」というやつですね。順序は問いませんから「順列」ではありません。
そうすると
9個の数字から4つ選ぶ組み合わせということになります。
9c4
こうなりまして、答えは126です。
意外と少ないと感じませんか?
数学的に個数はわかりましたが、どうやってつくりゃいいんだ?
これも意外と簡単。4重のFor~Nextループで作れます。
####################
LET counter = 0
FOR a = 1 TO 6
   FOR b = a + 1 TO 7
      FOR c = b + 1 TO 8
         FOR d = c + 1 TO 9
            PRINT a;b;c;d
            LET counter = counter + 1
         NEXT d
      NEXT c
   NEXT b
NEXT  a
PRINT counter

END
####################
これでいい。
↓結果です。
1  2  3  4
1  2  3  5
1  2  3  6
1  2  3  7
1  2  3  8
1  2  3  9
1  2  4  5
1  2  4  6
・・・(中略)・・・
4  7  8  9
5  6  7  8
5  6  7  9
5  6  8  9
5  7  8  9
6  7  8  9
126
ほらね、126通りできました。

★こうやって発生させたものが四則演算で10になるかどうか。
「MakeTen.txt」をダウンロード
↑これがチェックリストです。
数字の次の列の数は、プログラムが得た解の個数。でもこれは数学的には等価な解を重複して数えていますので、あてにはなりません、「解があった」という意味だけです。
で、ファイルが大きくなりすぎないように、解の表示は1つだけにしてあります。
「3478」は解が一つと表示されています。
「4679」「5679」の解がそれぞれ2つとなっているのは事実上1つなのですけれど、足し算の前後を入れ替えても同じだ、という規則をプログラム化するのがめんどくさくて、こうなりました。

★私には「10を作る」プログラムをエクセルのVBAで書いたものがあります。
Make10_2_2  
薄緑に塗ったセルに数字をいれます。これがプログラムへの入力になります。
マクロとボタンを関連付けておきまして。
数字を入力したら「Go」ボタンを押すと計算してくれるというものです。
で答えが下に出ていますね。
Make10_3
数字の順序はどうでもいいです。
ところで、「7÷3」を「2.333333・・・」と計算してしまうと、最後に10になったかどうか判定する時に「許容誤差範囲内で一致」という判定をしなければならなくなります。コンピューターが有限の数値しか扱えないことから発生する誤差問題ですね。
9.999999・・・と10は等しいのか?
また無限が入ってくるのは気持ち悪い話ですよね、特に小学生くらいだと。
そこで、私のプログラムでは、割り算したときに、計算を実行せず「分数」のまま保持して、分数で計算ができるようにしてあります。有理数で計算する、といってもいい。
Make10_1_2
3478ですが。この場合は割り算を実行して小数にしても誤差問題はありません。
Make10_4
1158です。これも割り算を実行してしまってもかまいません。その方がかえって分かりやすいかも。
1÷5=0.2
1-0.2=0.8
8÷0.8=10
ですね。

★さて、プログラム本体ですが。
VBAマクロが走るエクセルブックをダウンロードできるようにするのは問題ありますよね。
ウィルスが仕込まれていたら大変。
ですから、プログラムをテキストファイルでお目にかけます。
「Make10Prgm.txt」をダウンロード
VBAに強い方は、ご自分のエクセルにこのまま移植してお使いくださって結構です。
それはちょっと、という方で、10になるかどうかどうしても決着がつかなくて気持ち悪いという方はコメントに書き込んでください。私の方でこのプログラムを使ってチェックして差し上げますので。
どうぞ、ご利用ください。

« ガ | トップページ | ヒガンバナ »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ガ | トップページ | ヒガンバナ »

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ