Tantangan
Tulis sebuah program yang, diberi boolean array 2 dimensi (ekuivalen, bitmap monokromatik), menghasilkan serangkaian poligon yang menggambarkan garis besar wilayah yang “benar” (1).
Input diberikan sebagai urutan karakter '#'
(hash), ' '
(spasi) dan \n
(baris baru). Garis mungkin berbeda panjangnya, dalam hal ini bagian yang hilang diasumsikan spasi. Keluaran harus berupa daftar (terpisah baris) poligon, setiap poligon diwakili oleh daftar koordinat (dipisahkan koma).
Contoh & Persyaratan
Koordinat harus terdaftar dalam urutan searah jarum jam. Memasukkan:
#
Output yang dapat diterima meliputi:
(0,0), (1,0), (1,1), (0,1) (1,0), (1,1), (0,1), (0,0) (1,1), (0,1), (0,0), (1,0) (0,1), (0,0), (1,0), (1,1)
Wilayah yang terpisah harus mengembalikan banyak poligon. Memasukkan:
# #
Contoh output (output aktual harus terdiri dari dua baris):
(0,0), (1,0), (1,1), (0,1) (2,0), (3,0), (3,1), (2,1)
Lubang-lubang dalam poligon harus terdaftar sebagai poligon terpisah, tetapi dalam urutan anti-jarum jam. Memasukkan:
### # # ###
Contoh output:
(0,0), (3,0), (3,3), (0,3) (1,1), (1,2), (2,2), (2,1)
Anda bebas memilih apakah simpul yang berdekatan secara diagonal bergabung atau tidak. Memasukkan:
# #
Contoh output:
(0,0), (1,0), (1,1), (0,1) (1,1), (2,1), (2,2), (1,2)
atau
(0,0), (1,0), (1,1), (2,1), (2,2), (1,2), (1,1), (0, 1)
Daftar koordinat tidak harus pendek secara optimal. Sebagai contoh:
##
Output yang dapat diterima:
(0,0), (2,0), (2,1), (0,1) // Redundant coordinates along a straight line are acceptable (0,0), (1,0), (2,0), (2,1), (1,1), (0,1) // Duplicate start- and end-point are acceptable (0,0), (2,0), (2,1), (0,1), (0,0)
Seperti biasa, program terpendek "menang".