朝の10分プログラミング(12日目、2024年6月18日)解説
本日の課題、おつかれさまでした。
条件を満たす大小2個のさいころの目の和の場合の数を数えるプログラムを作成することができたでしょうか。
プログラム例
問題(1)のプログラム例を示しておきます。
// 大小2個のさいころの目の和が8または10になる場合は何通りあるか。
void setup(){
int pip_num = 6; // さいころの目の数
int counter = 0; // カウンターを準備、初期化
for(int i=1; i<=pip_num; i++){ // 1. 1つ目のさいころの目
for(int j=1; j<=pip_num; j++){ // 2. 2つ目のさいころの目
if( i+j == 8 || i+j == 10 ){ // 3. (1)和が8または10になっているか
counter++; // 4. カウンターの値を一つ増やす
}
}
}
println(counter); // カウントした数をコンソールに出力
}
ソースコード1 さいころの目の和が8または10になる場合の数を数えるプログラムの例
開発環境ウィンドウを立ち上げて、テキストエディタ部分にソースコード1を書き写して、実行ボタンを押してみると、コンソールに 8 と出力されることを確かめてみてください(図1)。
解説
プログラムのポイント
今回のプログラム(ソースコード1)でのポイントは、「さいころの目の和が8または10になる場合」という条件をプログラムでどのように表すか、だと思います。1つ目のさいころの目が i 、2つ目のさいころの目が j 、とすると、「さいころの目の和が 8 になる」という条件は、
i+j == 8
という条件式で表すことができます。同様に、「さいころの目の和が 10 になる」という条件は、
i+j == 10
という条件式で表すことができます。今回の問題(1)では「和が 8 または 10」となっていますので、これら2つの条件を論理和を表す演算子「||」を利用して、
i+j == 8 || i+j == 10
で表すことができます。
なお、今回の課題については、記事『高校数学をプログラミングで解く(数学A編)「1-2 場合の数」』に詳しい解説を載せていますので、そちらをご覧ください。問題(2)と問題(3)のプログラム例も載せています。
また、この記事の下の方に「区別できない2個のさいころの目の和の場合」の課題とその解説を載せています。是非この課題にもチャレンジしてみてください。
明日は「順列」に関する問題をプログラミングで解くことを考えていきます。
明日もよろしくお願いします。
MK’s papa
この記事が気に入ったらサポートをしてみませんか?