Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonとNumPyでn×nの市松模様(チェックボード)パターンを表示する方法

数値 n が与えられたとき、n × n の行列に対して市松模様(チェックボード)パターンを表示するのが本記事の目的です。

NumPyには、初期値を指定して配列を作成できる便利な関数が多数用意されています。NumPyはPythonにおける科学技術計算の基盤となるパッケージであり、行列演算や配列操作を効率的に行えます。

アルゴリズム

ステップ1: 行列の次数 n を入力する。
ステップ2: np.zeros((n, n), dtype=int) を使って n×n のゼロ行列を作成する。
ステップ3: スライシングを使い、交互の行・列に 1 を設定する。
ステップ4: 完成した行列を表示する。

スライシングの仕組み

市松模様を作るポイントは、次の2つのスライシング指定です。

  • x[1::2, ::2] = 1 … 奇数番目の行(1行目から2行おき)かつ偶数番目の列(0列目から2列おき)の要素に 1 を代入します。
  • x[::2, 1::2] = 1 … 偶数番目の行かつ奇数番目の列の要素に 1 を代入します。

この2つの操作により、0と1が交互に並ぶ市松模様が完成します。

サンプルコード

import numpy as np

def checkboardpattern(n):
   print("Checkerboard pattern:")
   x = np.zeros((n, n), dtype=int)
   x[1::2, ::2] = 1
   x[::2, 1::2] = 1
   # パターンを表示
   for i in range(n):
      for j in range(n):
         print(x[i][j], end=" ")
      print()

# ドライバーコード
n = int(input("Enter value of n ::>"))
checkboardpattern(n)

実行結果

Enter value of n ::>4
Checkerboard pattern:
0 1 0 1
1 0 1 0
0 1 0 1
1 0 1 0

このように、np.zeros() で作成したゼロ行列に対してスライシングで値を一括代入するだけで、ループ処理を最小限に抑えたシンプルな実装が可能です。n の値を変更すれば、任意のサイズの市松模様を簡単に生成できます。

  1. 【Python】ループを使わずに数列を出力する方法:再帰呼び出しを活用した実装

    はじめに 本記事では、以下の問題に対する解決策について詳しく解説します。 問題の概要 2つの整数 N と K が与えられたとき、N が 0 より大きい間は N から K を引き続けます。そして N が 0 以下になったら、今度は元の値 N に戻るまで K を足していきます。 入力例 N = 10 K = 4 出力例 10 6 2 -2 2 6 10 アルゴリズムの考え方 N が 0 より大きい間、関数を再帰的に呼び出し続けます(各呼び出しごとに N から K を減算します)。 数値が 0 以下になったら、元の値に戻るまで各呼び出しごとに K を加算します。 加算と減算は同じ1つの関数

  2. Pythonによる巡回冗長検査(CRC)の実装方法とサンプルコード

    巡回冗長検査(CRC)とは 巡回冗長検査(CRC:Cyclic Redundancy Check)は、デジタルデータ内の誤りを検出するために広く利用されている手法で、伝送エラーの検出に特に有効な技術として知られています。この手法の計算の中核を担っているのは「2進数の除算(バイナリ除算)」です。 CRCでは、一連の冗長ビットからなる「CRCビット(検査用ビット)」を使用します。これらのビットはデータ単位(データワード)の末尾に付加され、付加後のデータ単位全体が、あらかじめ決められた特定の2進数(除数)でちょうど割り切れるように構成されます。 受信側での誤り判定の流れ 受信側では、受信したデータ