背景
在排版中,河流是一块文本中的视觉间隙,这是由于空间的同时对齐而发生的。这些特别令人讨厌,因为您的大脑似乎在周围视力中更容易拾取它们,从而不断分散您的视线。
例如,以下面的文本块为例,这些行的折断使得行宽不超过82个字符:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eismod tempor
incididunt ut labore et dolore maga aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet,
consectetur adipisicing elit, sed do eismod tempor incididunt ut labore et dolore
maga aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
右下角有一条横跨六行的河流,在以下块中已突出显示:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eismod tempor
incididunt ut labore et dolore maga aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
officia deserunt mollit anim id est laborum. Lorem█ipsum dolor sit amet,
consectetur adipisicing elit, sed do eismod tempor█incididunt ut labore et dolore
maga aliqua. Ut enim ad minim veniam, quis nostrud█exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat. Duis aute█irure dolor in reprehenderit in
voluptate velit esse cillum dolore eu fugiat nulla█pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui█officia deserunt mollit anim id
est laborum.
我们可以通过选择稍有不同的列宽来缓解这种情况。例如,如果我们使用不超过78个字符的行来布局相同的文本,则河的长度不得超过两行:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eismod tempor
incididunt ut labore et dolore maga aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore
eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt
in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor
sit amet, consectetur adipisicing elit, sed do eismod tempor incididunt ut
labore et dolore maga aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis
aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
请注意,出于这个问题的目的,我们仅考虑等宽字体,以使河流只是空间的垂直列。一条河的长度就是它所跨越的线数。
另外:如果您对比例字体的河流检测感兴趣 ,那么网络上会有一些有趣的帖子。
挑战
您将得到一串可打印的ASCII字符(代码点0x20至0x7E)-即一行。打印此文本,其行宽在70到90个字符(含)之间,以使文本中任何河流的最大长度最小。如果有多个相同的(最小)最大河流长度的文本宽度,请选择较窄的宽度。上面带有78个字符的示例是该文本的正确输出。
若要换行,应使用换行符替换空格字符(0x20),以使生成的行具有尽可能多的字符,但不超过所选文本宽度。请注意,产生的换行符本身不属于该计数。例如,在上面的最后一个块中,Lorem[...]tempor
包含78个字符,这也是文本的宽度。
您可以假定输入将不包含连续的空格,并且将不包含前导或尾随空格。您可能还假定没有一个单词(非空格的连续子字符串)包含超过70个字符。
您可以编写程序或函数,通过STDIN,命令行参数或函数参数获取输入并将结果打印到STDOUT。
这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。