면책 조항 :이 질문에서 들었던 이야기는 전적으로 허구이며 소개를 제공하기위한 목적으로 만 고안되었습니다.
저는 건축가 인 친구가 있는데 코드 골프와이 사이트의 개념을 그에게 설명한 후에 실제로 변경에 유용한 코드를 작성해야한다고 말했습니다. 나는 그에게 그가 유용하다고 생각하는 것을 물었고 건축가로서 그는 특정 크기의 집에서 특정 크기의 방에 대해 가능한 모든 준비를 제공하는 평면도를 가질 것이라고 대답했습니다. 코드 골프가 전혀 쓸모가 없다는 것을 증명하고 가능한 한 적은 바이트 수로이 프로그램을 제공한다고 생각했습니다.
당신의 작업 :
집 전체의 크기를 포함하는 배열 D와 실내 공간의 크기를 포함하는 두 번째 배열 R을 제공하면 ASCII 아트로 출력하여 집 내부의 모든 가능한 방 구성을 제공하는 프로그램 또는 함수를 작성하십시오.
집의 모든 방과 외벽은 | 수직 벽의 경우 기호, 수평 벽의 경우-기호, 모서리의 + 기호 예를 들어, 치수가 [4,4] 인 집은 다음과 같습니다.
+----+
| |
| |
| |
| |
+----+
보시다시피 모서리는 치수 세트의 일부로 계산되지 않습니다. -또는 | 변을 형성하는 문자는 치수에 주어진 숫자와 같아야합니다. 방은 벽을 공유하거나 집과 벽을 공유 할 수 있습니다. 방 안에는 더 작은 방이 없을 수 있습니다.
예를 들어, 구성
+--+---+-+
| | | |
| | | |
+--+---+ |
| |
| |
+--------+
D = [5,8] 및 R = [[2,2], [2,3]]에 유효합니다.
입력:
두 개의 배열 중 하나에는 두 개의 정수, 집의 크기가 있고 다른 하나에는 방의 크기가 포함 된 일련의 배열이 있습니다.
산출:
가능한 모든 주택을 문자열로 배열하거나 가능한 모든 주택을 포함하는 문자열을 일관된 방식으로 구분합니다. 정확히 동일한 구성의 회전은 한 번만 계산해야합니다.
테스트 사례 :
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.
| | | | | | | | | | | |
| | | | | | | | | | | |
+---++--+ +--+-+-++ +-+--++-+ ++---+--+
| | | | | || | | | | || | |
+---+---+ +--+---++ +-+---+-+ ++---+--+
채점 :
이것은 code-golf 이며 바이트 단위의 최저 점수입니다!
D = [4,2]
하지만 당신의 집 [4,3]
은 그렇지 않습니까?