Mathematica、Wolfram言語
数学研究するための問題の変形方法-Part3-1–
こんにちは。投稿頻度が遅くなってしまい、申し訳ございません。今回も、数学研究するための問題変形方法について説明したいと思います。
今回の問題はこちら
今回の問題
9枚の札に1〜9までの数字が一つずつ書かれています。この中から3枚の札を抜き出し、3桁の整数Aを作ります。次に残った6枚の札の中から3枚の札を抜き出し、3桁の整数Bを作ります。次の□に適当な数を入れなさい。
(1)整数Aが奇数になり、整数Bが偶数になるような整数A,Bの組み合わせは全部で□個あります。
(2)整数Aと整数Bの差は最も小さい場合でア、最も大きい場合でイになります。
(平成30年度 慶應義塾中等部)
今回はこの問題をコードにしていきます。
(1)整数Aが奇数になり、整数Bが偶数になるような整数A,Bの組み合わせは全部で□個あります。
コードのヒント
コードのヒント
※これはプログラムですので、プログラムはいくつも考えられます。今回はその一例のコードのヒントを掲載します。
以下のように出力するといいでしょう。
{a,b,c,d,e,f} a~fは重複のない1~9の整数
a,b,cは整数A
d,e,fは整数B
コードの答え
コードの答え(例)
≠は!=と表示させます。(どちらでも使用可能です)
<コード>
aa = Select[Tuples[Range[9], 6],
(#[[1]] != #[[2]] != #[[3]] != #[[4]] != #[[5]] != #[[6]]) &];
Length[Select[aa, OddQ[#[[3]]] && EvenQ[#[[6]]] &]]
<mathematicaの図>
よって、答えは16800
(2)整数Aと整数Bの差は最も小さい場合でア、最も大きい場合でイになります。
コードのヒント
コードのヒント
新しい変数を作り、条件に合うものをSelectします。
コードの答え
コードの解答(例)
<コード>
aaa = Select[aa, 100*#[[1]] + 10*#[[2]] + #[[3]] <
100*#[[4]] + 10*#[[5]] + #[[6]] &];
Select[aaa, (100*#[[4]] + 10*#[[5]] + #[[6]] – 100*#[[1]] – 10*#[[2]] – #[[3]]) < 15 &]
<mathematicaの例>
最後の15の値を順番に代入していき、計算結果に空集合のマークが出るとそこが答えになります。よって、最小14 最大864
次回はこの問題の変形について紹介します。
コメント