Giriş
Bu zorluktaki girişiniz bir tamsayı çifti listesidir. Düzlemdeki birim karelerin güneybatı köşelerini ve liste düzlemin bir alt kümesi olarak birliklerini temsil eder. Örneğin, liste
[(0,0),(1,0),(0,1),(1,1),(2,1),(1,2),(2,2)]
Bu resimdeki kırmızı renkli seti temsil eder:
Çıktı
Yor çıktısı, düzlemin dikdörtgen altkümelerini temsil eden tam sayı dörtlü bir listedir. Daha açık bir şekilde, dörtlü bir (x,y,w,h)
kısım , güneybatı köşesinde bulunan genişlik w > 0
ve yükseklikteki bir dikdörtgeni yineler . Dikdörtgenler, birim karelerin her birinin bir dikdörtgenin alt kümesi olduğu, her dikdörtgenin bölgenin alt kümesi olduğu anlamında, giriş bölgesinin tam bir örtüsünü oluşturmalıdır ve iki dikdörtgen yalnızca kendi sınırlarında üst üste gelebilir. Önemsiz çözümleri yasaklamak için, kaplama daha büyük bir dikdörtgene birleştirilebilecek iki dikdörtgen içermemelidir.h > 0
(x,y)
Örneğin, liste
[(0,0,2,1),(0,1,3,1),(1,2,2,1)]
yasal kapsamı temsil eder
Yukarıdaki bölgelere ait
[(0,0,2,2),(2,1,1,1),(1,2,1,1),(2,2,1,1)]
komşu 1'e 1 kareler birleştirilebileceğinden yasadışı:
kurallar
Tam bir program veya bir işlev verebilirsiniz. Girdi ve çıktının kesin biçimlendirilmesi, gerekçeyle önemli değildir. En kısa bayt sayısı kazanır ve standart boşluklar izin verilmez. Algoritmanız hakkında bir açıklama ve bazı örnek çıktılar vermeniz teşvik edilir.
Test Kılıfları
U şeklinde bir bölge:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(2,0),(2,1),(3,0),(3,1),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5)]
Büyük bir üçgen:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(0,9),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(5,0),(5,1),(5,2),(5,3),(5,4),(6,0),(6,1),(6,2),(6,3),(7,0),(7,1),(7,2),(8,0),(8,1),(9,0)]
Delikli bir kare:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(3,0),(3,1),(3,2),(3,4),(3,5),(3,6),(3,7),(3,8),(3,9),(4,0),(4,1),(4,2),(4,3),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,7),(5,8),(5,9),(6,1),(6,2),(6,3),(6,5),(6,6),(6,7),(6,8),(6,9),(7,0),(7,1),(7,2),(7,3),(7,4),(7,5),(7,6),(7,7),(7,8),(7,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,4),(9,5),(9,6),(9,7),(9,8),(9,9)]
Bağlantısız bölgeler:
[(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),(0,8),(1,0),(1,1),(1,2),(1,3),(1,4),(1,6),(1,7),(1,8),(1,9),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6),(2,7),(2,8),(2,9),(4,0),(4,1),(4,2),(4,4),(4,5),(4,6),(4,7),(4,8),(4,9),(5,0),(5,1),(5,2),(5,3),(5,4),(5,5),(5,6),(5,7),(5,8),(5,9),(6,0),(6,1),(6,2),(6,4),(6,5),(6,6),(6,7),(6,8),(6,9),(8,0),(8,1),(8,2),(8,3),(8,4),(8,5),(8,6),(8,7),(8,8),(8,9),(9,0),(9,1),(9,2),(9,3),(9,7),(9,8),(9,9),(10,0),(10,1),(10,2),(10,3),(10,4),(10,5),(10,6),(10,7),(10,8),(10,9)]
Doğrulayıcı
Kullanın bu Çözümünüzü doğrulamak için Python 2 programı. STDIN'den bir tuples listesi (giriş) ve virgülle ayrılmış dörtlü bir liste (çıktınız) alır.
Ayrıca bu Python 2 programını resim üretmek için yazdım ve siz de kullanabilirsiniz. STDIN'den t ya da dörtlü bir listesini alır ve adlı bir dosya oluşturur out.png
. PIL kütüphanesini gerektirir. İsterseniz ızgara hücrelerinin boyutunu ve gird çizgilerinin genişliğini de değiştirebilirsiniz.