Feragatname: Bu soruda anlatılan hikaye tamamen kurgusaldır ve yalnızca bir giriş sağlamak amacıyla icat edilmiştir.
Mimar olan bir arkadaşım var ve ona kod-golf kavramını ve bu siteyi açıkladıktan sonra, bir değişiklik için gerçekten yararlı bir şey kodlamam gerektiğini söyledi. Ona neyin yararlı olduğunu düşündüğünü sordum ve bir mimar olarak, belirli bir büyüklükteki bir evdeki belirli boyutlardaki odalar için mümkün olan tüm düzenlemeleri veren bir kat planlayıcıya sahip olmaktan keyif alacağını söyledi. Her şeyden önce kod golfünün işe yaramaz olduğunu kanıtlayacağımı ve bu programı mümkün olan en az baytla vereceğimi düşündüm.
Senin görevin:
Tüm evin boyutlarını içeren bir D dizisi ve iç odaların boyutlarını içeren ikinci bir dizi R verildiğinde, ASCII sanatı olarak çıkan, evin içindeki odaların tüm olası konfigürasyonlarını veren bir program veya fonksiyon yazın.
Evin tüm odaları ve dış duvarları standart ASCII kutuları şeklinde oluşturulmalıdır. dikey duvarlar için sembol, yatay duvarlar olarak - sembolü ve köşeler için + sembolü. Örneğin, [4,4] boyutlarında bir ev şöyle görünecektir:
+----+
| |
| |
| |
| |
+----+
Gördüğünüz gibi, köşeler bir dizi boyutun parçası olarak sayılmaz. - veya | kenar oluşturan karakterler boyutlarda verilen sayıya eşit olmalıdır. Odalar duvarları paylaşabilir veya evle duvarları paylaşabilir. Bir oda kendi içinde daha küçük odalar içeremez.
Örneğin, yapılandırma
+--+---+-+
| | | |
| | | |
+--+---+ |
| |
| |
+--------+
D = [5,8] ve R = [[2,2], [2,3]] için geçerlidir.
Giriş:
Biri iki tamsayı içeren iki dizi, evin boyutları ve diğeri odaların boyutlarını içeren bir dizi dizi içerir.
Çıktı:
İster dizge olarak mümkün olan tüm evlerin bir dizisi ya da bir şekilde tutarlı bir şekilde sınırlandırılmış olası tüm evleri içeren bir dize. Aynı yapılandırmanın dönüşlerinin yalnızca bir kez sayılması gerektiğini unutmayın.
Test Durumları:
D R -> Output
[4,3] [[2,1],[4,1]] -> +-+-+ +-+-+ +-+-+ Note that though there is an option to switch which side the [2,1] room and the [4,1] room are on, doing so would merely be rotating the house by 180 degrees, and therefore these possibilities do not count.
| | | +-+ | | | |
+-+ | | | | | | |
| | | | | | +-+ |
| | | +-+ | | | |
+-+-+ +-+-+ +-+-+
[4,7] [[3,1],[4,2],[2,2] -> +----+--+ +----+--+ +----+--+ +----+--+ There are some more possiblities I didn't feel like adding, but it's the same four again, just with the [4,2] and the [2,2] room switched.
| | | | | | | | | | | |
| | | | | | | | | | | |
+---++--+ +--+-+-++ +-+--++-+ ++---+--+
| | | | | || | | | | || | |
+---+---+ +--+---++ +-+---+-+ ++---+--+
puanlama:
Bu kod golf , bayt kazanır en düşük puan!
D = [4,2]
, ama eviniz [4,3]
öyle değil mi?