爱丽丝是一家公司的实习生,该公司使用Brainfuck作为客户端和服务器端开发的主要语言。爱丽丝(Alice)刚刚编写了她的第一个代码,在为第一次代码审查做准备时,她有点紧张。
爱丽丝(Alice)希望使代码正确格式化并看起来不错,但是她没有时间阅读328页的公司代码样式指南,因此她决定将其格式化为一个完美的正方形。code,代码长度可能不足以形成正方形,因此她决定在中间留一个矩形间隙。间隙必须完全居中,并尽可能接近正方形。
例子
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
编写程序或函数来帮助Alice。给定Alice的代码作为输入字符串,请尽可能输出如下所述的格式正确的代码。如果无法格式化,请输出哭泣的表情符号:~(
。
这是代码高尔夫,因此答案以字节计分,目标是减少字节数。
约束条件
- 您的程序或函数应将单个字符串作为输入并输出一行或多行文本(如果实现函数,则返回多行字符串或字符串数组)。
- 输入字符串可以包含任何ASCII字符,包括空格。
- 输入中的所有空格都必须忽略。它们不应该计算代码长度,也不应该在输出中使用。
- 输入字符串包含至少一个非空白字符。
- 格式化的代码必须具有与输入代码相同的顺序的相同非空格字符。
- 格式化的代码必须是一个完美的正方形,即所有行应具有相同的长度,行数应等于行的长度。
- 格式化的代码可能在中间包含一个空格。
- 间隙中只能使用空格字符(ASCII代码32)。
- 间隙(如果有)必须为矩形。
- 格式化代码的每一行必须至少包含一个非空白字符,即,间隙宽度必须严格小于正方形宽度(对于5x5正方形,间隙5x1是不可接受的)。
- 间隙应为水平,即间隙宽度应大于或等于间隙高度。
- 间隙必须完美居中。
- 因此,间隙宽度和高度奇偶校验应该与正方形宽度奇偶校验相同(例如,对于5x5正方形间隙,可以为1x1、3x1或3x3)。
- 如果可能,输出没有任何间隙的平方。
- 在有多个解决方案的情况下,选择一个间隙最接近正方形的间隙,即间隙宽度和间隙高度之间的差异最小(例如:间隙10x10比8x6更可取,而8x6比6x2更可取)。
- 如果仍然有平局,请选择具有最小间隙面积的解决方案(例如,间隙2x2比4x4更可取)。
- 如果根本无法格式化代码,请输出
:~(
。 - 最后一行之后的换行是可选的。
- [新增]您可以放心地假设任何代码低于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上找到示例代码和其他测试用例。
[新]您可以看一下接受的解决方案表,最多输入100个字符。我换了宽和高,因为它看起来更直观。
灵感来源:文字方块
变化
添加了2个测试,修复了示例代码中的错误。
添加了最多100个解决方案表,并添加了空格说明。