بخشی از مجموعه

چندین نمونه کد

~2 دقیقه مطالعه • بروزرسانی ۲۶ شهریور ۱۴۰۴

تعریف ماتریس جادویی

ماتریس جادویی یک ماتریس n×n است که در آن:
- هر خانه شامل عددی صحیح از 1 تا است
- مجموع هر سطر، هر ستون، و قطرهای اصلی با هم برابرند
این الگوریتم فقط برای مقادیر فرد n قابل اجراست.


قوانین ساخت ماتریس جادویی:

  1. الف: عدد ۱ در ستون وسط سطر اول قرار می‌گیرد.
  2. ب: برای عدد بعدی، یک خانه به سمت بالا و چپ حرکت می‌کنیم.
  3. ج: اگر خانه مقصد پر باشد، یک خانه به سمت پایین حرکت می‌کنیم.
  4. د: اگر در حرکت مورب از محدوده ماتریس خارج شویم، به انتهای سطر یا ستون مربوطه برمی‌گردیم.
  5. ه: اگر هم‌زمان از محدوده سطر و ستون خارج شویم، فقط یک خانه به سمت پایین حرکت می‌کنیم.

کد پایتون:


def generate_magic_square(n):
    if n % 2 == 0:
        raise ValueError("تولید ماتریس جادویی فقط برای n فرد امکان‌پذیر است.")

    square = [[0] * n for _ in range(n)]
    num = 1
    row, col = 0, n // 2  # مرحله الف

    while num <= n * n:
        square[row][col] = num
        num += 1

        next_row = (row - 1) % n  # مرحله ب + بازگشت در صورت خروج
        next_col = (col - 1) % n

        if square[next_row][next_col] != 0:  # مرحله ج
            row = (row + 1) % n
        else:
            row, col = next_row, next_col

    return square

# اجرای برنامه
n = int(input("عدد فرد n را وارد کنید: "))
magic = generate_magic_square(n)
print("\nماتریس جادویی:")
for row in magic:
    print(row)

نمونه خروجی (n = 3):


ماتریس جادویی:
[8, 1, 6]
[3, 5, 7]
[4, 9, 2]

توضیح مراحل برنامه:

در این برنامه:
- عدد ۱ در وسط سطر اول قرار می‌گیرد
- هر عدد بعدی به‌صورت مورب بالا-چپ قرار می‌گیرد
- در صورت برخورد با خانه پر یا خروج از محدوده، حرکت اصلاح می‌شود
- در پایان، ماتریس جادویی کامل چاپ می‌شود که مجموع سطرها، ستون‌ها و قطرها برابر است


نوشته و پژوهش شده توسط دکتر شاهین صیامی