Memasukkan
Papan: Wadah 2D (matriks, daftar daftar, dll.) Dari huruf-huruf seperti:
["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
Jika Anda memilih daftar daftar, Anda dapat mengasumsikan bahwa semua daftar panjangnya sama.
Aturan
- Untuk membuat persegi panjang yang valid, Anda membutuhkan semua sudut persegi panjang dengan 'huruf' yang sama.
- Contoh, lihat papan sampel dengan X di bawah. Anda dapat melihat 'X' pada (1,0) juga pada (4,0) juga pada (1,3) dan pada (4,3) maka Anda memiliki kotak [1,0,4,3] yang artinya dari (1,0) hingga (4,3):
Papan sampel dengan X :
["B", "X", "C", "C", "X", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "X", "B", "A", "X", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
- Tujuannya adalah untuk menemukan persegi panjang atau salah satu dari persegi panjang dengan area terbesar, dihitung dengan (kanan-kiri + 1) * (bawah-atas + 1)
- Jika ada beberapa persegi panjang dengan area maksimum yang sama, hasilkan salah satunya. Secara opsional, yang dengan (koordinat atas, koordinat kiri, koordinat kanan, koordinat bawah) terkecil secara leksikografis.
- Persegi panjang harus memiliki tepi yang sejajar dengan tepi papan.
- Setiap huruf adalah karakter ASCII yang dapat dicetak dari A hingga Z (keduanya termasuk).
Keluaran
Outputnya harus berupa posisi kiri-atas dan kanan-bawah dari sudut persegi panjang area terbesar. Untuk sampel "papan" pertama, kotak besar adalah kotak kuning:
Dan jawabannya harus:
[1, 1, 8, 4]
Contoh kasus uji kedua
Masukan dari:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Harus menghasilkan satu dari tiga daftar koordinat ini yang mengidentifikasi area enam persegi panjang:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
Pertanyaan ini diposting di Stack Overflow dengan judul: Bagaimana menemukan persegi panjang terbesar dalam array 2D yang dibentuk oleh empat sudut yang identik? dan dengan solusi JS kasar ini (saya dapat mengatakan "kasar" karena kode saya;):
Ok, ini posting pertama saya, tolong toleransi dengan saya. Saya akan mengubah semua yang Anda katakan untuk meningkatkan kuis.
((left,top),(right,bottom))
harus baik-baik saja. Saya menghapus jawaban dan jawaban saya lagi ketika pertanyaan benar-benar disempurnakan.