見出し画像

朝の10分プログラミング(13日目、2024年6月19日)解説

本日の課題、おつかれさまでした。

$${7}$$個のものから$${3}$$個を取った順列の総数$${_7 P_3}$$を計算するプログラムを作成することができたでしょうか。

プログラム例

プログラム例を示しておきます。

// 異なるn個のものからr個を取った順列の総数
void setup(){

  int n = 7;
  int r = 3;
  int p = 1; // 順列の総数
  for(int i=0; i<r; i++){ 
    p = p * (n-i);
  }
  println(p); // 順列の総数をコンソールに出力
}

ソースコード1 $${7}$$個のものから$${3}$$個を取った順列の総数$${_7 P_3}$$を計算するプログラムの例

開発環境ウィンドウを立ち上げて、テキストエディタ部分にソースコード1を書き写して、実行ボタンを押してみると、コンソールに 210 と出力されることを確かめてみてください(図1)。

図1 コンソールに 210 と出力される

この結果は、$${_7 P_3 = 7 \cdot 6 \cdot 5 = 210}$$と一致しています。

解説

今回の課題は、「$${_7 P_3}$$を計算する」ことですので、$${_7 P_3 = 7 \cdot 6 \cdot 5}$$をそのまま、

void setup(){
  int p = 7*6*5;
  println(p);
}

のように書いても、問題ありません。でも、これだと、ちょっと味気ないですね。$${_7 P_2}$$とか$${_8 P_3}$$などの添え字の値を変えても計算できるようにはしたいところです。その一つの例が、ソースコード1になると思います。
実際、ソースコード1では、

  int n = 7;
  int r = 2;

とすれば、$${_7 P_2}$$が計算できますし、また、

  int n = 8;
  int r = 3;

とすれば、$${_8 P_3}$$が計算できます。変更して試してみてください。

なお、今回の課題については、記事『高校数学をプログラミングで解く(数学A編)「1-3 順列」』に詳しい解説を載せていますので、そちらをご覧ください。
また、この記事の下の方に「円順列」や「重複順列」に関連する課題とその解説を載せています。是非これらの課題にもチャレンジしてみてください。

明日は「組合せ」に関する課題をプログラミングで解くことを考えていきます。

明日もよろしくお願いします。

MK’s papa

この記事が気に入ったらサポートをしてみませんか?