Penafian: Kisah yang diceritakan dalam pertanyaan ini sepenuhnya fiksi, dan diciptakan semata-mata untuk tujuan memberikan intro.
Saya punya teman yang seorang arsitek, dan, setelah menjelaskan konsep kode-golf dan situs ini kepadanya, dia berkata bahwa saya harus memberi kode sesuatu yang benar-benar berguna untuk perubahan. Saya bertanya kepadanya apa yang dia anggap berguna, dan, sebagai seorang arsitek, dia menjawab bahwa dia akan menikmati memiliki perencana lantai yang memberinya semua kemungkinan pengaturan untuk kamar-kamar dengan ukuran tertentu di dalam rumah dengan ukuran tertentu. Saya pikir saya akan membuktikan bahwa kode-golf tidak berguna sama sekali, dan memberinya program ini dalam jumlah byte terkecil yang mungkin.
Tugas Anda:
Tulis sebuah program atau fungsi yang, ketika diberi larik D yang berisi dimensi seluruh rumah, dan larik kedua R yang berisi dimensi kamar interior, keluaran sebagai seni ASCII, semua kemungkinan konfigurasi kamar di dalam rumah.
Semua kamar dan dinding eksterior rumah harus dibentuk sebagai kotak ASCII standar, menggunakan | simbol untuk dinding vertikal, - simbol sebagai dinding horizontal, dan simbol + untuk sudut. Misalnya, rumah dengan dimensi [4,4] akan terlihat seperti:
+----+
| |
| |
| |
| |
+----+
Seperti yang Anda lihat, sudut tidak dihitung sebagai bagian dari serangkaian dimensi. Jumlah - atau | karakter yang membentuk sisi harus sama dengan angka yang diberikan dalam dimensi. Kamar dapat berbagi dinding, atau berbagi dinding dengan rumah. Sebuah ruangan mungkin tidak mengandung kamar yang lebih kecil di dalamnya.
Misalnya saja konfigurasi
+--+---+-+
| | | |
| | | |
+--+---+ |
| |
| |
+--------+
berlaku untuk D = [5,8], dan R = [[2,2], [2,3]].
Memasukkan:
Dua array, yang satu berisi dua bilangan bulat, dimensi untuk rumah, dan yang lainnya berisi serangkaian array yang berisi dimensi untuk kamar.
Keluaran:
Entah susunan semua rumah yang mungkin sebagai string, atau string yang berisi semua rumah yang mungkin, dibatasi secara konsisten. Perhatikan bahwa rotasi konfigurasi yang sama persis hanya boleh dihitung satu kali.
Kasus uji:
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.
| | | | | | | | | | | |
| | | | | | | | | | | |
+---++--+ +--+-+-++ +-+--++-+ ++---+--+
| | | | | || | | | | || | |
+---+---+ +--+---++ +-+---+-+ ++---+--+
Mencetak:
Ini adalah kode-golf , skor terendah dalam byte menang!
D = [4,2]
, tapi rumahmu ada[4,3]
, bukan?Jawaban:
Python 2 ,
625607602563551 byteCobalah online!
Beberapa penjelasan Ini adalah pendekatan serakah:
sumber