Bagaimana Anda memvalidasi kotak ajaib dengan python?

Harnick
Walet tanpa muatan

Postingan. 1

Utas. 1

Bergabung. Agustus 2017

Reputasi. 0

09 Agustus 2017, 10. 44 AM (Pos ini terakhir diubah. 09 Agustus 2017, 11. 32 AM oleh buran. )

pertanyaan saya di sini
Hai, saya baru mengenal python dan saya ditugaskan untuk membuat teka-teki kotak ajaib. Namun masukan untuk teka-teki kotak ajaib harus disediakan melalui file. Inilah tugasnya
 Program harus meminta pengguna untuk membuka nama file dari file teks – beberapa penanganan kesalahan Python harus digunakan jika pengguna memasukkan nama file yang tidak ada

 Program harus membaca isi file teks yang diberikan dan menyimpannya dalam struktur data Python yang sesuai

 Validasi yang tepat harus dilakukan untuk memastikan file yang disediakan berisi nxn kotak persegi digit lengkap, dan memastikan semua digit adalah bilangan bulat dalam rentang 1 hingga n2;

 Dengan asumsi kotak bilangan bulat n x n persegi yang sesuai berhasil dimuat ke dalam struktur data yang dipilih;

 Jika ada kesalahan yang terdeteksi di papan teka-teki maka rincian kesalahan ini harus diberikan kepada pengguna

 Jika papan teka-teki lulus semua pemeriksaan validasi, maka harus ditulis ke dalam file teks baru menggunakan format yang sama dengan file masukan asli (lihat contoh file teks di atas) – nama untuk file teks baru ini harus asli
Saya akan sangat menghargai jika ada yang bisa membantu saya dengan tugas ini karena saya telah berjuang

Terimakasih banyak


Lebih lanjut menambah ini, ini adalah kode yang saya miliki sejauh ini
fr = open('magicsquare1.txt', 'r')
#Calculating Totals for each row
for line in fr:
    total = 0
    line = line.split()
    c = len(line)
    print(line)

    for i in range(c):
        total = total +int(line[i])

print("total:", total)

Membalas

Menemukan

Membalas

nilamo
Kamisisme terakhir

Bagaimana Anda memvalidasi kotak ajaib dengan python?

Postingan. 3.458

Utas. 101

Bergabung. Sep 2016

Reputasi. 143

Agustus-09-2017, 04. 51 sore

Pecahkan masalah menjadi bagian-bagian kecil, dan buat setiap bagian kecil bekerja dengan sendirinya. Setelah Anda memilikinya, Anda dapat menggabungkannya untuk menyelesaikan keseluruhan proyek

Misalnya, saya sarankan untuk mengabaikan penanganan file, masukan pengguna, dan penguraian konten file. Mulailah dengan hard-coding kotak ajaib, dan tulis fungsi yang memeriksa apakah itu valid atau tidak. Sesuatu seperti.

def is_square_valid(square):
    # I actually have no idea what a magic square is, so they all look invalid to me
    return False

test_square = [
    [2, 3, 4],
    [6, 1, 2],
    [1, 5, 3]
]

print(is_square_valid(test_square))
Setelah berhasil dengan berbagai input, maka Anda dapat mulai membuat segalanya menjadi lebih rumit

Membalas

Menemukan

Membalas

Utamanya, minta pengguna untuk memasukkan bilangan bulat yang akan digunakan untuk membuat kotak ajaib, dan simpan bilangan bulat tersebut ke dalam variabel square_size

Contoh masukan/keluaran

Enter an odd integer to build a magic square: 5
  • Pastikan input pengguna (ukuran_persegi) ganjil. Jika tidak, cetak pesan kesalahan dan keluar atau kembali dari main.
    Enter an odd integer to build a magic square: 6
    6 is not an odd integer. Terminating...
      
  • Jika bilangan bulat input ganjil, buat matriks (daftar dua dimensi) dengan ukuran itu dan cetak dengan membenarkan setiap nilai tepat dalam 4 spasi. Gunakan fungsi yang disediakan untuk membantu tugas ini. Membuat daftar harus mengambil 1 baris kode, mencetak baris kosong harus mengambil yang lain, dan mencetak matriks harus mengambil 1 lagi

    Enter an odd integer to build a magic square: 5
    
       0   0   0   0   0
       0   0   0   0   0
       0   0   0   0   0
       0   0   0   0   0
       0   0   0   0   0
    
    _
  • Salin dan tempel fungsi berikut di program Anda.
    def build_magic_square(square):
        """
        Create a magic square in "square"
        
        Parameter:
        square: a two dimensional array whose number of rows and columns are equal
                and len(square) is an odd number.
    
        Modifies "square" but doesn't return anything.
        """
        magic_value = 1
        square_size = len(square)
        row = 0
        col = square_size // 2
        square_size_squared = square_size * square_size
        while magic_value <= square_size_squared:
            square[row][col] = magic_value
            row -= 1
            col += 1
            if row < 0 and col > square_size - 1:
                row += 2
                col -= 1
            elif row < 0:
                row = square_size - 1
            elif col > square_size - 1:
                col = 0
            elif square[row][col] != 0:
                row += 2
                col -= 1
    
            magic_value += 1
    
  • Di main, masukkan panggilan ke fungsi ini untuk membuat kotak ajaib. Panggilan fungsi ini harus berada di antara baris kode yang membuat dan mencetak daftar 2D

    Bagaimana Anda membuktikan kotak ajaib?

    Untuk membuktikan bahwa bujur sangkar yang dibangun dengan Metode Siam adalah bujur sangkar ajaib, kita harus menunjukkan bahwa setiap baris, kolom, dan diagonal utama jumlahkan ke jumlah ajaib.

    Bagaimana Anda memeriksa apakah sebuah array adalah kotak ajaib?

    Hitung jumlah setiap baris dan kolom. Jika jumlah diagonal prima dan diagonal sekunder sama dengan jumlah setiap baris dan jumlah setiap kolom, maka itu adalah matriks ajaib .

    Algoritma apa yang digunakan dalam kotak ajaib?

    Algoritma untuk Magic Square of Order n, Dimana n adalah Ganjil . Kotak ajaib orde 3 ditunjukkan pada Gambar 1, yang dibentuk menggunakan aturan Coxeter .

    Bagaimana cara mengetahui matriks berbentuk persegi?

    Jika suatu matriks memiliki jumlah baris dan kolom yang sama (mis. g. , jika m == n) , matriksnya adalah bujur sangkar.