Escreva um programa que adicione ou remova espaços em branco para formatar bem o código. Regras para a aparência do código quando você terminar:
- Nenhuma linha deve conter mais de um de
{
e}
. - A
{
sempre deve ser a última coisa em uma linha. - A
}
sempre deve ser a única coisa em uma linha (além do espaço em branco que vem antes dela). - A quantidade de espaço em branco na frente de cada linha deve ser um múltiplo fixo da contagem de aninhamento atual. (Você pode usar qualquer quantidade de recuo que desejar, desde que não seja alterado.)
- Nenhum espaço em branco deve ser inserido ou removido que não contribua para satisfazer uma dessas regras.
A contagem de aninhamento para a primeira linha é 0. A contagem de aninhamento de qualquer outra linha é a contagem de aninhamento da linha anterior, mais uma se a linha anterior contiver a {
, menos uma se a linha atual contiver a }
.
{
e }
literais e comentários de strings internos não contam nas regras acima. Um literal de string é um texto entre aspas simples ou duplas, onde aspas simples ou duplas com um número ímpar de barras invertidas imediatamente antes delas não são interpretadas como o final da literal da string. Um comentário é um texto entre /*
e */
ou texto que vai do //
final da linha. Em uma linha com vários marcadores de início de comentário, apenas o primeiro conta. Os comentários não são analisados dentro de literais de string.
Exemplos
main() {printf("Hello!"); // I don't care about the world...
}
becomes:
main() {
printf("Hello!"); // I don't care about the world...
}
int main(){
puts("a");
puts("b");
}
becomes:
int main(){
puts("a");
puts("b");
}
main()
{ printf("{"); /* }
} */
printf("}//}"); ///*
}
becomes:
main()
{
printf("{"); /* }
} */
printf("}//}"); ///*
}
int test[] = {1, 2, 3};
becomes:
int test[] = {
1, 2, 3
}
;