Termine as abas contra a guerra espacial
Portanto, houve um grande debate sobre o uso de guias ou espaços para recuar / formatar o código. Você pode ajudar a universidade a resolver a disputa, adotando um método único e incrivelmente louco de formatação.
Seu trabalho é escrever um programa ou função completo que expanda todas as guias em quatro espaços. E então substitui uma série de n espaços à esquerda por "/ (n - duas estrelas aqui) /". Você receberá entrada em várias linhas em qualquer formato razoável (matriz de cadeias de caracteres única para cada nova linha. Matriz colunar etc.)
Entrada de amostra roubada descaradamente . Observe que, como as guias são expandidas automaticamente para quatro espaços no SE, eu o represento como o caractere "^", mas você também deve manipular as guias (codepoint 0x09). Todos os caracteres "^" representam uma tabulação.
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
Not zero so multiply by 256 again to get 65536
[>++++<-]>[<++++++++>-]<[>++++++++<-]
+>[>
# Print "32"
++++++++++[>+++++<-]>+.-.[-]<
<[-]<->] <[>>
# Print "16"
+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
# Print "8"
++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
^this is preceded by a tab
^^two tabs
^^^three tabs etcetera!
Saída de amostra
Calculate the value 256 and test if it's zero
If the interpreter errors on overflow this is where it'll happen
++++++++[>++++++++<-]>[<++++>-]
+<[>-<
/**/Not zero so multiply by 256 again to get 65536
/**/[>++++<-]>[<++++++++>-]<[>++++++++<-]
/**/+>[>
/******/# Print "32"
/******/++++++++++[>+++++<-]>+.-.[-]<
/**/<[-]<->] <[>>
/******/# Print "16"
/******/+++++++[>+++++++<-]>.+++++.[-]<
<<-]] >[>
/**/# Print "8"
/**/++++++++[>+++++++<-]>.[-]<
<-]<
# Print " bit cells\n"
+++++++++++[>+++>+++++++++>+++++++++>+<<<<-]>-.>-.+++++++.+++++++++++.<.
>>.++.+++++++..<-.>>-
Clean up used cells.
[[-]<]l
/**/this is preceded by a tab
/******/two tabs
/**********/three tabs etcetera!
Como a universidade precisa de espaço para baixar o Vim e o Emacs, você tem muito pouco espaço de armazenamento para o seu código. Portanto, este é o código-golfe e o código mais curto vence. Você pode assumir que a entrada é bem formada e as linhas com menos de quatro espaços (após a substituição das guias) podem resultar em um comportamento indefinido.
aviso Legal
Essa estratégia de formatação "excelente" veio como cortesia do Geobits e é reproduzida com sua permissão. Nenhum programador foi prejudicado durante a produção deste desafio.
/*
, ou isso pode ser assumido como não uma "entrada bem formada"? Um arquivo de origem C ++ teria sido um teste melhor, porque seu comentário de várias linhas /* */
possivelmente quebraria algumas respostas que substituem o primeiro e o último dos espaços iniciais por um /
e, em seguida, prossiga para preencher espaços com *
.
/* */
código C ++, mas desta vez no início da linha. De acordo com suas especificações, ele deve ser deixado como está. Aqui a armadilha é, e já encontrou respostas erradas, que um regex como o dizer /\** /
usado para preencher esses espaços entre // com asteriscos transformaria a linha /***/
. Eu já vi essa conversão também /*//*/
. Presumo que ambos estejam incorretos.