이것은 코드 골프입니다. 승자는 바이트 수가 가장 적은 유효한 코드입니다.
도전
사각형 사각형 격자의 너비와 높이가 M 과 N 인 입력 은 다음을 만족하는 다각형을 출력합니다.
- 다각형 가장자리는 정사각형 가장자리로만 구성됩니다. 대각선 가장자리는 없습니다. 모두 세로 또는 가로입니다.
- 다각형에는 구멍이 없습니다. 다각형 바깥 쪽의 모든 사각형은 사각형 바깥 쪽의 다각형 바깥 쪽 사각형에서 시작하여 다각형 바깥 쪽 사각형의 직교 단계를 통해 도달 할 수 있습니다.
- 다각형에는 자체 교점이 없습니다 . 정점에서 만나는 정사각형 모서리 중 다각형 경계의 일부는 2를 초과 할 수 없습니다.
- 다각형이 연결됩니다. 다각형 내에있는 직교 단계를 통해 다각형의 다른 사각형에서 다각형의 모든 사각형에 도달 할 수 있어야합니다.
- 다각형은 아래에 표시된 공식에 따라 가능한 최대 둘레를 갖습니다 .
코드는 M 과 N에 대해 1에서 255까지 작동해야합니다 .
최대 둘레에 대한 공식
여기서 가장 어려운 점은 최대 둘레를 가진 다각형 중 가장 골프 가능한 것을 찾는 것입니다. 최대 둘레 자체는 항상 다음 공식으로 정의됩니다.
모든 정사각형 정점이 주변에 있어야하기 때문에 이는 사실입니다. 홀수의 꼭짓점에 대해서는 이것이 불가능하며 얻을 수있는 최선은 한 쪽 꼭짓점이 적습니다 (주변이 항상 고르기 때문에).
산출
모양을 개행 문자로 구분 된 문자열 ( 정확히 M 문자 의 N 행) 로 출력하십시오 . 여기서는 다각형 외부의 사각형에 공간을 사용하고 다각형 내부의 사각형에 '#'을 사용하지만 그 의미가 모든 입력에 일관성이 있다면 시각적으로 다른 두 문자를 사용할 수 있습니다.
최대 하나의 선행 개행 문자와 최대 하나의 후행 개행 문자를 포함 할 수 있습니다.
원하는 경우 대신 정확히 N 문자 의 M 행을 출력하고 일부 입력의 경우 M by N 출력을 선택 하고 다른 입력의 경우 N by M 출력을 선택할 수 있습니다 .
예
구멍 때문에 유효 하지 않습니다 :
###
# #
###
교차점 (대각선 터치-주변에 4 개의 정사각형 모서리가있는 정점) 및 실수로 구멍으로 인해 유효 하지 않습니다.
##
# #
###
연결이 끊어져서 유효 하지 않습니다 :
#
# #
#
최대 둘레의 유효한 다각형 :
# #
# #
###
크레딧
처음에는 최대 둘레의 값을 얼마나 빨리 계산할 수 있는지 과소 평가했으며 그 값을 출력으로 요구하려고했습니다. 채팅에 도움이 된 사람들 덕분에 임의의 N과 M의 최대 경계를 해결하는 방법을 설명하고 하나 이상의 대답을 마지막됩니다 도전에이 차례 돕는 ...
특히 감사합니다 :
Sparr , Zgarb , feersum , jimmy23013 .