圣战已经在空间与标签之间展开。(当然还有赢得客观上的优势的空间。)— Alex A.
小号青梅PEO p文件仍然拒绝到一个 ccept该 WHI Ç h是CL Ë阿尔利 š upreme。你刚刚收到 一个使用INCOR文件重新克拉,b广告,和INF ē的WHI rior形式牛逼协商,现在牛逼他续Ë一个文件的NTS [R Ë污染和破坏。
您决定还可以向发送文件的人显示他们的错误程度。
描述
顾名思义,您面临的挑战是获取一个包含一个或多个标签的文件:
this is an evil tab onoes
无情地将它们粉碎成碎片:
this is an evil tab
o
n
o
e
s
请注意,Stack Exchange软件将文字选项卡转换为四个空格(因为它是正确的),因此本文中的选项卡将显示为四个空格。但是,程序的输入将包含实际的选项卡。
挑战
解决方案应采用单个字符串作为输入,其中可能包含可打印的ASCII,换行符和制表符。输入中将始终至少有一个选项卡。
输出应为相同的字符串,并应用以下规则:
在坐标(0,0)处并向右方向启动光标。坐标是(列,行),零索引,方向是打印字符后应移动光标的方向。
对于字符串中的每个字符:
如果是换行符,请移至坐标(0,n),其中n是到目前为止字符串中的换行符数目(包括该行),然后将方向重置为右。
如果是选项卡,则输出两个空格,将光标方向顺时针旋转90度,然后再输出两个空格,从而有效地将选项卡“分成两半”。这是一个可视示例,其中选项卡表示为
--->
,空格表示为·
:foo--->bar--->baz
变成
foo··· · b a r · · zab··
否则,只需在光标处输出字符,然后将光标向当前方向移动一步。
由于您是从头到尾读取字符串的,因此您可能必须在现有字符的“顶部”书写—可以。例如,输入
foo--->bar
spaces are superior
应该导致输出
foo
b
spaces are superior
r
您可以选择是否使用“残破的标签”覆盖其他字符-最初的目的是不要覆盖其他字符,但是规范不明确,因此这是您的决定。
此外,应用这些规则后,您还可以
添加或删除任意数量的尾随空格。
最多添加一个尾随换行符。
输入将永远不会包含尾随空格;它也绝不会包含前导或尾随的换行符。您可能还始终假设您永远不需要写小于0的列或行(即不在屏幕上)。
测试用例
此测试用例中的选项卡表示为,--->
因为否则SE会将它们吞噬。
输入:
Test case. Here's a tab--->there's a tab--->everywhere a tab--->tab--->this is some more text
blah
blah
blah blah blah blah blah blah--->blaah--->blaah--->blah--->blaaaaah--->blah--->blah--->blah--->blah--->blah
输出:
Test case. Here's a tab
blah
blah t
blah blah blah blah blah blah
blaablah
r b
e l b
h 'h a l
a sa a a
l l h h
this is some mobe tbxt
haalhalb
b a
a b
t
bat a erehwyreve
花式动画:
规则
- 这是代码高尔夫球,所以最短的代码(以字节为单位)将获胜!
(0,0)
,您是说我们需要首先清除控制台,还是只不过是指光标的默认位置?