Alice는 Brainfuck을 클라이언트 측 및 서버 측 개발의 기본 언어로 사용하는 회사의 인턴입니다. Alice는 방금 첫 번째 코드를 작성했으며 첫 번째 코드 검토를 준비 할 때 약간 긴장합니다.
Alice는 자신의 코드를 올바르게 형식화하고 멋지게 보이기를 원하지만 328 페이지의 회사 코드 스타일 가이드를 읽을 시간이 없으므로 완벽한 정사각형 으로 형식화하기로 결정했습니다 . 아아, 코드 길이가 사각형을 형성하기에 충분하지 않을 수 있으므로 중간에 직사각형 간격 을두기로 결정했습니다 . 간격은 완벽해야 중심 과 같은 가까운 광장 할 수있다.
예
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
Alice를 돕는 프로그램이나 함수를 작성하십시오. Alice의 코드를 입력 문자열로 지정하면 가능한 경우 아래 설명 된대로 올바른 형식의 코드를 출력하십시오. 포맷이 불가능하면 울음 이모티콘을 출력하십시오 :~(
.
이것은 코드 골프 이므로 답은 바이트 수로 목표 점수가됩니다.
제약
- 프로그램 또는 함수는 단일 문자열을 입력으로 사용하여 하나 이상의 텍스트 줄을 출력해야합니다 (또는 함수를 구현하는 경우 여러 줄 문자열 또는 문자열 배열을 반환).
- 입력 문자열에는 공백을 포함한 모든 ASCII 문자가 포함될 수 있습니다.
- 입력 된 모든 공백은 무시해야합니다. 코드 길이를 계산해서는 안되며 출력에 사용해서는 안됩니다.
- 입력 문자열에 공백이 아닌 문자가 하나 이상 포함되어 있습니다.
- 형식이 지정된 코드는 입력 코드와 동일한 순서로 공백이 아닌 문자를 사용해야합니다.
- 형식이 지정된 코드는 완전한 정사각형이어야합니다. 즉, 모든 줄의 길이는 같아야하고 줄 수는 줄 길이와 같아야합니다.
- 형식화 된 코드에는 중간에 공백이있을 수 있습니다.
- 공백 문자 (ASCII 코드 32) 만 공백에 사용할 수 있습니다.
- 갭 (있는 경우)은 직사각형이어야합니다.
- 형식이 지정된 코드의 모든 줄은 공백이 아닌 문자를 하나 이상 포함해야합니다. 즉 간격 너비는 반드시 사각형 너비보다 작아야합니다 (갭 5x1은 5x5 사각형에는 사용할 수 없음).
- 간격은 수평이어야합니다. 즉 간격 폭은 간격 높이 이상이어야합니다.
- 간격은 완벽하게 중앙에 있어야합니다.
- 결과적으로 간격 너비와 높이 패리티는 사각형 너비 패리티와 같아야합니다 (예 : 5x5 사각형 간격의 경우 1x1, 3x1 또는 3x3 일 수 있음).
- 가능하면 간격없이 사각형을 출력하십시오.
- 여러 솔루션의 경우 간격이 정사각형에 가장 가까운 것을 선택하십시오. 즉, 간격 너비와 간격 높이의 차이가 최소화됩니다 (예 : 간격 10x10이 8x6보다 더 바람직하고 8x6이 6x2보다 더 바람직 함).
- 여전히 동점이있는 경우, 최소 갭 면적을 가진 솔루션을 선택하십시오 (예 : 갭 2x2가 4x4보다 더 좋습니다).
- 코드를 전혀 포맷 할 수 없으면 output을 출력하십시오
:~(
. - 마지막 줄 뒤의 줄 바꿈은 선택 사항입니다.
- [New] 33 이하의 코드를 가진 문자는 공백으로 가정합니다. 골프에 도움이 되길 바랍니다.
테스트
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
까다로운 테스트
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
자원
공간을 절약하기 위해 tio.run 에서 샘플 코드 및 추가 테스트 사례를 찾을 수 있습니다.
[New] 최대 100 자까지 입력 가능한 솔루션 표를 살펴볼 수 있습니다 . 좀 더 직관적으로 보이기 때문에 너비와 높이를 바꿨습니다.
고무시키는 : 정사각형의 텍스트
변경
2 개의 테스트를 추가하고 샘플 코드의 버그를 수정했습니다.
최대 100 개의 솔루션 표를 추가하고 공백을 추가했습니다.