ラテン方陣問題 - pythonの達成

問題の説明

N×N行列のラテン正方行列であり、行列は正確にn個の異なる要素を、正確にnの各要素を有しており、各要素は、行に表示され、ただ一つの列。その名のラテン語ラテン方陣の正方形の要素のシンボルとして、ラテンアルファベットを使用して有名な物理学者と数学者オイラー。
例えば:
1 2 3
2 3 1
3 1 2
問題:N次ラテン方陣を構築する方法?

リスト

def solution_list(n):
    for y in range(n):
        for x in range(n):
            num = (y + x) % n + 1
            print(f'{num} ', end='')
        print('\n')

ラウンドロビンリスト

class Node:
    """节点"""

    def __init__(self, value):
        self.data = value
        self.next = None

    def __repr__(self):
        return f'Node: {self.data}'


class CircularLinkedList:
    """单循环链表"""
    def __init__(self):
        self.rear = None    # 尾节点

    def append(self, elem):
        """尾插法"""
        temp = Node(elem)
        if self.rear is None:
            temp.next = temp
            self.rear = temp
        else:
            temp.next = self.rear.next
            self.rear.next = temp
            self.rear = temp


def solution_circular_linked_list(n):
    clist = CircularLinkedList()
    for i in range(1, n + 1):
        clist.append(i)

    cur = clist.rear
    while cur.next is not clist.rear:
        cur = cur.next
        temp = cur
        for _ in range(n):
            print(f'{temp.data} ', end='')
            temp = temp.next
        print('\n')

おすすめ

転載: www.cnblogs.com/thunderLL/p/12072068.html