我听说,如果反向缩进代码,则代码可以更快地运行,以便编译器可以从“分支”的顶部开始像树设计模式一样对其进行处理。这会有所帮助,因为重力会加快编译代码所需的时间,并且会提高数据结构的效率。这是一个Java脚本编写示例:
function fib(n) {
var a = 1, b = 1;
while (--n > 0) {
var tmp = a;
a = b;
b += tmp;
if (a === Infinity) {
return "Error!";
}
}
return a;
}
但是由于某些原因,记事本没有设置可以自动执行此操作,因此我需要一个程序来为我执行此操作。
描述
提交的内容必须以代码段作为输入,缩进缩进并输出结果代码。
这是通过以下过程完成的:
将代码分成几行。每行将以零个或多个空格开头(将没有制表符)。
在代码中找到所有唯一的缩进级别。例如,对于上面的示例,这将是
0 4 8 12
反转此缩进级别列表的顺序,然后将反转的列表映射到原始列表。这很难用语言解释,但是对于示例来说,它看起来像
0 — 12 4 — 8 8 — 4 12 — 0
将此映射应用于原始代码。在示例中,具有0-space-indentation的行将缩进12个空格,将4个空格变为8个空格,依此类推。
输入输出
可以根据需要提供输入和输出(STDIN / STDOUT,功能参数/返回值等);如果您的语言不支持多行输入(或者您只是不想这样做),则可以使用|
字符来分隔行。
输入将仅包含可打印的ASCII +换行符,并且将不包含空行。
测试用例
输入:
function fib(n) {
var a = 1, b = 1;
while (--n > 0) {
var tmp = a;
a = b;
b += tmp;
if (a === Infinity) {
return "Error!";
}
}
return a;
}
输出:上面的示例代码。
输入:
a
b
c
d
e
f
g
h
输出:
a
b
c
d
e
f
g
h
输入:
1
2
3
2
1
输出:
1
2
3
2
1
输入:
foo
输出:
foo