Versi satu dimensi dari masalah ini cukup mudah, jadi inilah versi 2D yang lebih sulit.
Anda diberi array 2D ketinggian tanah pada input standar, dan Anda harus mencari tahu di mana danau akan terbentuk ketika hujan. Peta ketinggian hanyalah array persegi panjang dari angka 0-9, inklusif.
8888888888
5664303498
6485322898
5675373666
7875555787
Anda harus menampilkan larik yang sama, menggantikan semua lokasi yang akan menjadi air *
.
8888888888
566*****98
6*85***898
5675*7*666
7875555787
Air dapat keluar secara diagonal, sehingga tidak ada danau dalam konfigurasi ini:
888
838
388
kode menang pendek. Kode Anda harus menangani ukuran hingga lebar 80 dan tinggi 24.
Tiga contoh lagi:
77777 77777
75657 7*6*7
75757 => 7*7*7
77677 77677
77477 77477
599999 599999
933339 9****9
936639 => 9*66*9
935539 9*55*9
932109 9****9
999999 999999
88888888 88888888
84482288 8**8**88
84452233 => 8**5**33
84482288 8**8**88
88888888 88888888
Jawaban:
Haskell, 258 karakter
Contoh dijalankan:
Lulus semua tes unit. Tidak ada batasan ukuran ukuran.
m
sumber
Python,
483491 karakterSaya cukup yakin ada cara yang lebih baik (dan lebih pendek) untuk melakukan ini
sumber
input()
dengansys.stdin.read()
dan menghapus trailing\n
dari input sampel saya.sys.stdin.read()
membaca dari sebuah file bukan? Saya masih agak baru di Python.sys.stdin.read()
membaca STanDard INput hingga EOF.input()
membaca dan mengevaluasi satu baris input standar.Python,
478471 karakter(Tidak termasuk komentar.
452450 karakter tidak termasuk impor.)Idenya di sini adalah bahwa saya membangun grafik terarah di mana setiap sel jaringan memiliki simpul sendiri (ditambah satu simpul "tiriskan" tambahan). Ada tepi pada grafik dari masing-masing sel yang bernilai lebih tinggi ke sel-sel tetangganya yang bernilai lebih rendah di sebelahnya, ditambah ada tepi dari semua sel luar ke vertex "tiriskan". Saya kemudian menggunakan Floyd-Warshall untuk menghitung titik mana yang terhubung ke titik "tiriskan"; setiap simpul yang tidak terhubung akan dibanjiri dan digambar dengan tanda bintang.
Saya tidak punya banyak pengalaman dengan mengkondensasi kode Python, jadi mungkin ada cara yang lebih ringkas saya bisa menerapkan metode ini.
sumber
Common Lisp, 833
Tidak ada upaya yang dilakukan untuk golf ini, saya baru saja menemukan masalah yang menarik. Input adalah array 2D dari peta. Solusinya memeriksa setiap kuadrat untuk melihat apakah "dikeringkan" - saluran kuadrat jika berada di tepi luar atau jika berdekatan dengan kuadrat tinggi yang sama atau lebih rendah yang mengalir. Agar tidak berulang tanpa henti, kode menyimpan "drain map" (dm) tempat ia menyimpan status drainase kotak yang telah ditentukan.
sumber
Python, 246 karakter
Solusinya bekerja dengan melakukan DFS dari setiap posisi untuk menentukan apakah akan mengisi atau tidak.
Jika membuntuti spasi putih pada setiap baris diizinkan, itu dapat dipersingkat dengan menggunakan w = 80 dan mengisi garis input dengan spasi putih hingga 80 karakter.
sumber