Я слышал, что ваш код может работать быстрее, если вы сделаете отступ в обратном порядке, так что компилятор может обработать его как шаблон проектирования дерева с самого верха «ветвей» вниз. Это помогает, потому что гравитация ускорит время, необходимое для компиляции вашего кода, и эффективность структуры данных улучшится. Вот пример в сценариях 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;
}
Но по какой-то причине в Notepad нет настройки, позволяющей делать это автоматически, поэтому мне нужна программа, которая сделает это за меня.
Описание
Представления должны принимать фрагмент кода в качестве входных данных, изменять отступ и выводить полученный код.
Это делается с помощью следующей процедуры:
Разделите код на строки. Каждая строка будет начинаться с нуля или более пробелов (вкладок не будет).
Найти все уникальные уровни отступа в коде. Например, для приведенного выше примера это будет
0 4 8 12
Измените порядок в этом списке уровней отступов и сопоставьте перевернутый список с исходным списком. Это сложно объяснить словами, но для примера это будет выглядеть
0 — 12 4 — 8 8 — 4 12 — 0
Примените это сопоставление к исходному коду. В этом примере строка с 0-пробелом будет иметь отступ в 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