見出し画像

高校数学10分プログラミング(46日目、2024年8月5日)

おはようございます。

今日は、高校数学10分プログラミングの46日目です。

本日の課題は、割り算の余りによる場合分けを利用したプログラムを作成することです。


例題

キャンバス上に10ピクセル×10ピクセルのサイズの正方形を縦横30×30に並べて黒色と白色のチェック柄の図を表示するプログラムを作成します。

黒色と白色のチェック柄の図を表示するプログラム

黒色と白色のチェック柄の図を表示するプログラムは以下のようになります。

// 黒色と白色のチェック柄
void setup(){
  size(300,300);
  noStroke();
  
  int w_num = width/10;  // 横に並べる数
  int h_num = height/10; // 縦に並べる数
  
  for(int i=0; i<w_num; i++){
    for(int j=0; j<h_num; j++){
      if( (i+j)%2 == 0 ){
        fill(0,0,0); // 黒色で塗りつぶす
      } else {
        fill(255,255,255); // 白色で塗りつぶす
      } 
      rect(10*i, 10*j, 10, 10); // (i,j)の位置に正方形を描く
    }
  } 
}

ソースコード1 黒色と白色のチェック柄の図を表示するプログラム

Processing の開発環境ウィンドウを立ち上げて、そのテキストエディタ部分にソースコード1を書き写し、実行ボタン(左上の ▶ ボタン)を押すと、実行ウィンドウのキャンバス上に、黒色と白色のチェック柄の図が表示されます(図1)。

図1 黒色と白色のチェック柄の図

黒色と白色のチェック柄の表し方

黒色と白色のチェック柄の表し方は、今回以下のような手順で行っています。
チェック柄の横並びの番号を$${i}$$(左から$${0,1,2, \cdots, 29}$$)、縦並びの番号を$${j}$$(上から$${0,1,2, \cdots, 29}$$)とします。このとき、
$${i+j}$$が偶数であれば$${(i,j)}$$の位置に黒色の正方形を、$${i+j}$$が奇数であれば$${(i,j)}$$の位置に白色の正方形を表示することにすると、黒色と白色のチェック柄の図になります。
これをプログラムで表す場合、
 $${i+j}$$が偶数 $${\Rightarrow}$$ $${i+j}$$を$${2}$$で割った余りが$${0}$$
 $${i+j}$$が奇数 $${\Rightarrow}$$ $${i+j}$$を$${2}$$で割った余りが$${1}$$
となることを考慮すると、ソースコード1の

      if( (i+j)%2 == 0 ){
        fill(0,0,0); // 黒色で塗りつぶす
      } else {
        fill(255,255,255); // 白色で塗りつぶす
      } 
      rect(10*i, 10*j, 10, 10); // (i,j)の位置に正方形を描く

と記載することで実現できます。なお、fill 関数については記事『高校数学をプログラミングで解く(準備編)「2-2 Processingで色を扱う」』で解説しています。また、rect 関数についてはWebサイト『長方形を描く - 数学アートの部屋 (mathartroom.com)』で解説されていますので、そちらをご覧ください。


課題

キャンバス上に10ピクセル×10ピクセルのサイズの正方形を縦横30×30に並べていくときに、
 $${i+j}$$を$${5}$$で割ったときの余りが$${0}$$のとき、正方形を赤色
 $${i+j}$$を$${5}$$で割ったときの余りが$${1}$$のとき、正方形を緑色
 $${i+j}$$を$${5}$$で割ったときの余りが$${2}$$のとき、正方形を青色
 $${i+j}$$を$${5}$$で割ったときの余りが$${3}$$のとき、正方形を黄色
 $${i+j}$$を$${5}$$で割ったときの余りが$${4}$$のとき、正方形を黒色
となる柄を表示するプログラムを作成してください。


それでは、よろしくお願いします。

MK's papa

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