Bu dikdörtgenler dikdörtgen bir alanı doldurabilir mi?
Bir demet dikdörtgen verildiğinde, dikdörtgen bir alanı dolduracak şekilde düzenlenmiş olup olmadıkları sorulur.
gözlük
Bir dizi keyfi m x n
dikdörtgen verildiğinde ; 0 <= m, n <= 1000
, bunları herhangi bir delik veya örtüşme olmadan tam olarak dikdörtgen bir alanı kaplayacak şekilde düzenlemenin mümkün olup olmadığını belirleyin. Dikdörtgenler döndürülemez ve her dikdörtgen yalnızca bir kez yerleştirilebilir.
Giriş
Bunun için giriş çok esnektir; giriş bir çeşit 2 boşluk boyut listesi verir. Örneğin, aşağıdakilerin her ikisi de geçerlidir:
Boşluğa Göre Ayrılmış, Dönüş
1 2
1 5
4 5
3 6
Boyutların Listesi
[[1, 2], [1, 5], [4, 5], [3, 6]]
Çıktı
Doğru / yanlış, 0/1, T / F, Doğru / Yanlış gibi her türlü doğru / yanlış değer. Çok açık olmayan bir çıktı yöntemi kullanacaksanız, lütfen cevabınızı belirtin.
Örnekler
Test Durumu 1
Giriş:
1 1
1 5
2 6
Çıktı:
true
(veya benzeri bir şey)
Nasıl düzenlenir:
XYYYYY
ZZZZZZ
ZZZZZZ
Test Durumu 2
Giriş:
1 1
2 2
Çıktı:
false
(veya benzeri bir şey)
Açıklama: Farklı boyutlarda iki kare düzenleyemediğiniz ve kenarlarını sıraya koyamayacağınız açıktır.
Test Durumu 3
Giriş:
1 1
1 2
1 2
2 1
2 1
Çıktı:
true
(veya benzeri bir şey) Nasıl düzenlenir:
AAB
DEB
DCC
@ETHProductions'in belirttiği gibi, diğer tüm test durumlarında, tek bir dikdörtgene sahip olana kadar dikdörtgenleri ortak bir kenar uzunluğuyla birleştirmeye devam edebilirsiniz, bu nedenle bu test durumu yalnızca bu fikri kullanan herhangi bir kodu kırmak içindir.
Test Durumu 4
Giriş:
3 2
4 1
2 1
4 1
2 1
5 2
3 2
1 4
3 2
2 1
2 1
1 1
5 1
Çıktı:
true
(veya benzeri bir şey)
Nasıl düzenlenir:
AAABBBBEE
AAACCDDDD
FFFFFGGGH
FFFFFGGGH
IIIJJKKLH
IIIMMMMMH
Not : Nasıl düzenleyeceğinizi belirtmeniz gerekmez, yalnızca düzenlenip düzenlenmediğini belirlemeniz gerekir.
Bu kod golf, yani bayt cinsinden en kısa cevap kazanır! 14 Ocak'tan itibaren en kısa cevabı kabul edeceğim, ancak yine de oy verebileceğimden daha sonra cevap vermekten çekinmeyin! :)
Mutlu golf!
~ AL
PS Bu soruna hangi etiketin uygulanması gerektiğini biliyorsanız, lütfen ekleyin, kod-golf dışında bir etiket olarak ne yazacağımı kesinlikle bilmiyorum.
EDIT : Programınız iyi bir bilgisayarda en fazla 10 saniyede 25 dikdörtgen işleyebilmelidir (bu kural için oldukça esnek olacağım).
EDIT : Gönderim kabul tarihini yılın son gününe uzattım, ancak o zamana kadar bir cevap alacağımdan şüpheliyim ...
EDIT : Gönderim kabul son tarihini 2 hafta uzattım, o zaman cevap gelmezse, mevcut C cevabı kabul edilecektir! :)
[[1, 2], [2, 1], [1, 1], [1, 2], [2, 1]]
(düzenlenebilir ABB ACD EED
) için başarısız olur . Bu basit test senaryosunu eklemek isteyebilirsiniz.