NumPyを使ってn×nのチェッカーボード(市松模様)パターンを出力するPythonプログラム
nの値が与えられたとき、n×nの行列に対してチェッカーボード(市松模様)パターンを表示するのが本記事の目的です。
NumPyには、初期値を指定して配列を作成できるさまざまな関数が用意されています。NumPyはPythonにおける科学技術計算の基盤となるパッケージであり、数値配列の生成や操作を高速かつ簡潔に記述できます。
アルゴリズム
ステップ1: 行列の次数nを入力する。 ステップ2: zeros((n, n), dtype=int) を使って n×n のゼロ行列を作成する。 ステップ3: スライシングのテクニックを使い、交互の行と列に 1 を代入する。 ステップ4: 行列を表示する。
スライシングの仕組み
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
-
【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つの関数
-
ループを使わずに数列を出力するPythonプログラム|再帰とフラグで実現する方法
本記事では、for文やwhile文などのループ構文を一切使わずに数列を表示するという問題の解法について解説します。問題の定義問題: 2つの数値 N と K が与えられます。まずNが0より大きい間はNからKを繰り返し引き、Nが0以下(ゼロまたは負)になったら、今度は逆にKを足していきます。そして値が元の数値Nに戻った時点で処理を終了します。実行例N = 10K = 4出力: 10 6 2 -2 2 6 10アルゴリズムNが0より大きい間、関数を再帰的に呼び出し続けます。各呼び出しのたびにNからKを減算します。数値が0以下になったら加算モードに切り替え、各呼び出しごとにKを加算します。元の数値Nに