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

Pythonのラテン方格


ラテン方格は、特別なパターンを持つ行列です。パターンを調べるためにさまざまな例を見てみましょう。

1 2
2 1

1 2 3
3 1 2
2 3 1

1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1

上記の例でわかるように、取得するラテン方格のサイズは異なります。ただし、上記の行列のパターンを注意深く観察すると、前の行の最後の番号が次の行の最初の要素として表示されることがわかります。

それがラテン方格に隠されたパターンです。入力nに対して上記の行列を生成するプログラムを作成する必要があります。

アルゴリズム

  • nを任意の数で初期化します。
  • 値n+1で数値を初期化し、first_half_endと呼びます。
  • 1からnまでの両方を含むループを記述します。
    • first_half_endの値をfirst_half_startという変数に割り当てます。
    • first_half_startが値nに達するまでループを記述します。
      • 反復変数、つまりfirst_half_startを出力します。
    • 1からfirst_half_endまで繰り返すループを作成します。
      • 反復変数を出力します。
    • first_half_endの値を1デクリメントします。
    • 次の行を移動します。

実装

以下は、Pythonでの上記のアルゴリズムの実装です

def generateLatinSquare(n):
   first_half_end = n + 1

   for i in range(1, n + 1):
      first_half_start = first_half_end
      while (first_half_start <= n):
         print(first_half_start, end=" ")
         first_half_start += 1

      for second_half_start in range(1, first_half_end):
         print(second_half_start, end=" ")
      first_half_end -= 1
      print()
   print()

if __name__ == "__main__":
   generateLatinSquare(2)
   generateLatinSquare(3)
   generateLatinSquare(4)

出力

上記のコードを実行すると、次の結果が得られます。

1 2
2 1

1 2 3
3 1 2
2 3 1

1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1


  1. Pythonのissuperset()

    この記事では、Pythonでのissuperset()と、さまざまな分野でのその実装について学習します。 このメソッドは、セットBのすべての要素に引数として渡されるすべての要素セットAが含まれている場合はブール値Trueを返し、Aのすべての要素がBに存在しない場合はfalseを返します。 これは、BがAのスーパーセットである場合、それを意味します returns true; else False 例 いくつかの例を見てみましょう A = {'t','u','t','o','r','i',

  2. Pythonのcallable()

    Pythonのcallable()関数は、オブジェクトが呼び出し可能である場合はtrueを返し、そうでない場合はfalseを返す標準ライブラリの一部です。オブジェクト自体に呼び出し可能であるためのcallメソッドが必要です。たとえば、値を使用して変数を宣言するだけでは呼び出し可能ではありませんが、関数を宣言すると呼び出し可能になります。 呼び出し可能オブジェクト 以下に、呼び出し可能な関数を宣言します。これは、実際に関数を呼び出したり、呼び出し可能な関数をチェックしたりすることで確認できます。 例 def func_callable():    x = 3