Cara membuat kotak ajaib dengan python

Jika Anda ingin membuat kotak ajaib, periksa artikel ini, kode python di bagian bawah – Cara membuat kotak ajaib

Kotak ajaib adalah susunan bilangan dari 1 sampai N^2 (N-kuadrat) dalam matriks NxN, dengan setiap bilangan muncul tepat satu kali, dan jumlah entri dari setiap baris, sembarang . Sesuatu seperti ini.

Cara membuat kotak ajaib dengan python

Tugas kode python adalah mendapatkan persegi dengan dimensi apa saja dan menentukan apakah itu persegi ajaib atau bukan. Ini adalah masukan yang mungkin.

Lapangan Ajaib

Piton

1

2

3

4

5

cetak(magic_square([[1,2,3], [4,5,6], [7,8,9]]))

cetak(magic_square([[4,9,2], [3,5,7], [8,1,6]]))

cetak(magic_square([[7,12,1,14], [2,13,8,11], [16,3,10,5], [9,6,15,4]]))

cetak(magic_square([[23, 28, 21], [22, 24, 26], [27, 20, 25]]))

cetak(magic_square([[16, 23, 17], [78, 32, 21], [17, 16, 15]]))

Bagaimana hasilnya ditentukan?

Cara membuat kotak ajaib dengan python

Dalam kasus saya, saya membuat daftar dan menambahkan jumlah semua garis vertikal dan horizontal. Lalu saya menambahkan dua diagonal. Pada akhirnya, saya memeriksa apakah semua nilai dalam daftar itu sama. Jika mereka sama, ini berarti bujur sangkar itu ajaib. Ini adalah nilai dari daftar dan hasilnya

Kami sebelumnya melihat pengindeksan vektor 1 dimensi. Kami juga dapat mengindeks array yang lebih rumit seperti matriks. Dalam contoh ini kita akan membuat kotak ajaib, kotak ajaib adalah larik persegi di mana jumlah setiap kolom, baris, diagonal dan anti-diagonal adalah sama.

Untuk melakukan ini, kita perlu menggunakan fungsi perpustakaan pihak ketiga magic_square. Kami akan mengimpornya sebagai ms. Jika Anda belum menginstal perpustakaan ini, gunakan

Piton

Membuat Kotak Ajaib

Setelah kami memiliki pustaka ini, kami dapat mengimpor prasyarat NumPy sebagai np dan pustaka magic_square sebagai ms

Piton

[[17 24  1  8 15]
 [23  5  7 14 16]
 [ 4  6 13 20 22]
 [10 12 19 21  3]
 [11 18 25  2  9]]

Mari kita lihat dulu dimensi matriks menggunakan bentuk fungsi

Piton

(5, 5)

_

Ini mengembalikan jumlah baris dan jumlah kolom masing-masing. Karena merupakan persegi, keduanya memiliki nilai yang sama yaitu 5. Ingat kita menggunakan pengindeksan urutan 0, yang berarti kita mulai dari elemen ke-0 dan naik ke tetapi tidak menyertakan batas atas 5 ini, sehingga elemen maksimum adalah elemen ke-4. Kita bisa melihat ini ketika kita membuka variabel s di explorer variabel

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Mengindeks Elemen Tunggal

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Untuk memilih satu elemen misalnya elemen s pada baris 0 dan kolom 0 kita dapat menggunakan tanda kurung siku untuk mengindeks menjadi s. Pembatas koma digunakan untuk memisahkan elemen baris dari elemen kolom

Piton

17

Kita bisa mencoba juga untuk baris 1 dan kolom 3

Piton

14

Piton

12

_

Seperti yang kita lihat saat mengindeks dengan vektor, juga dimungkinkan untuk mengindeks menggunakan elemen negatif. Untuk ketiga nilai di atas mereka juga dapat ditentukan sebagai

Piton

17

Piton

14

Piton

12

_

Pengindeksan Banyak Nilai

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Dimungkinkan juga untuk memilih beberapa elemen. Misalnya jika kita menginginkan elemen di baris ke-1 dan kolom ke-2 dan elemen di baris ke-3 dan kolom ke-4, kita akan menggunakan. Perhatikan bahwa elemen baris diapit tanda kurung siku menggunakan koma sebagai pembatas. Elemen dalam kolom juga diapit oleh tanda kurung siku menggunakan koma sebagai pembatas. Dan keduanya diapit di luar tanda kurung siku, sekali lagi dengan pembatas di antara keduanya

Piton

[7 3]

_

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Dimungkinkan juga untuk membuat pilihan menggunakan titik dua. Katakanlah kita ingin baris 1 sampai 3 (ingat dengan pengindeksan urutan 0 kita pergi ke batas atas 3 ini tetapi tidak memasukkannya), jadi ini adalah baris 1 dan baris 2 dan kita ingin keduanya berada di kolom 1 yang bisa kita gunakan

Piton

[5 6]

_

Titik dua juga dapat digunakan untuk memilih baris atau kolom penuh. Mari kita ambil baris pertama misalnya

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Piton

(5, 5)

_0

Mengindeks Baris, Kolom, dan Diagonal

Dalam kotak ajaib, semua baris, kolom, dan diagonal memiliki nilai yang sama. Untuk kotak ajaib, periksa ini menggunakan pengindeksan baris atau kolom, fungsi penjumlahan, fungsi diag, dan fungsi fliplr. Saya menyarankan Anda untuk mencoba yang ini sebelum membaca di bawah untuk latihan

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Mari kita mulai dengan lima baris

Piton

(5, 5)

_1

Piton

(5, 5)

_2

Piton

(5, 5)

_3

Piton

(5, 5)

_4

Piton

(5, 5)

_5

Sejauh ini bagus, 5 baris semuanya memiliki jumlah 65, sekarang mari kita ulangi dengan 5 kolom

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Piton

(5, 5)

_6

Piton

(5, 5)

_7

Piton

(5, 5)

_8

Piton

(5, 5)

_9

Piton

17

0

Sejauh ini bagusnya lagi, semua kolom juga berjumlah 65

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Untuk diagonal kita bisa menggunakan fungsi diag

Piton

17

1
Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Sekali lagi sama dengan 65. Untuk antidiagonal, kita perlu membalikkan matriks ke kiri ke kanan.

Piton

Membuka sfliplr di explorer variabel dan membandingkannya dengan yang di atas

Cara membuat kotak ajaib dengan python
Cara membuat kotak ajaib dengan python

Kita melihat bahwa diagonal baru adalah antidiagonal sebelumnya, jadi kita dapat menggunakan fungsi diag

Piton

17

2

Kita sekarang melihat jumlah dari anti-diagonal juga sama dengan 65 artinya persegi ajaib yang dibuat memang persegi ajaib

Skrip Lengkap

Untuk kenyamanan saya akan meletakkan semua kode untuk menentukan panjang kotak ajaib ini dalam satu file skrip

Apa algoritma untuk kotak ajaib?

Kotak ajaib dalam keadaan normal direpresentasikan menggunakan matriks n × n . Kotak ajaib normal berisi bilangan bulat dari 1 sampai n2. Kotak ajaib normal ada untuk semua pesanan n ≥ 1, kecuali n = 2. Konstanta ajaib untuk kuadrat ajaib normal berorde n diberikan oleh n(n2 + 1)/2.

Apakah kotak ajaib merupakan susunan angka dengan Python?

Kotak ajaib adalah susunan angka yang berbeda (mis. e. , setiap angka digunakan sekali), biasanya bilangan bulat, dalam kotak persegi, di mana angka di setiap baris, dan di setiap kolom, dan angka di diagonal utama dan sekunder, semuanya dijumlahkan menjadi angka yang sama, yang disebut "magic . " Kotak ajaib memiliki hal yang sama

Bagaimana Anda memecahkan persegi ajaib 3x3?

Menyelesaikan Persegi 3 kali 3 . Ambil jumlah dari setiap angka di papan tulis dan bagi dengan jumlah baris . Dalam hal ini, angka ajaibnya adalah 1+2+… +9 = 45/3 = 15.