A principios de esta semana, aprendimos sobre cómo formatear idiomas esotéricos para comentar. Hoy vamos a hacer lo contrario de eso. Necesito que escriba un programa o función que analice un código esotérico bien comentado y analice los comentarios, devolviendo solo el código. Usando algunos ejemplos del desafío anterior, así es como se ve el código bien comentado:
a #Explanation of what 'a' does
bc #Bc
d #d
e #Explanation of e
fgh #foobar
ij #hello world
k #etc.
l #so on
mn #and
op #so forth
Esto es lo que debe hacer para extraer el código. Primero, elimine el carácter de comentario ( #
), el espacio antes y todo después del carácter de comentario.
a
bc
d
e
fgh
ij
k
l
mn
op
Luego, contraiga cada línea hacia arriba en una sola línea. Por ejemplo, dado que b
está en la segunda columna de la línea dos, una vez que la colapsamos, estará en la segunda columna de la línea uno . Del mismo modo, c
se colocará en la tercera columna de la línea uno, y d
se colocará en la cuarta. Repita esto para cada personaje, y obtendrá esto:
abcdefghijklmnop
Nota importante: Parece que la solución trivial es simplemente eliminar los comentarios, eliminar todos los espacios y unir cada línea. ¡Este no es un enfoque válido! Debido a que el código original puede tener espacios, estos se eliminarán con este enfoque. Por ejemplo, esta es una entrada perfectamente válida:
hello #Line one
#Line two
world! #Line three
Y la salida correspondiente debe ser:
hello world!
El reto:
Escriba un programa o función que tome el código comentado como entrada, y envíe o devuelva el código con todos los comentarios analizados. Debe generar el código sin espacios finales, aunque se permite una nueva línea final. El carácter del comentario siempre será #
, y siempre habrá un espacio adicional antes de que comiencen los comentarios. #
será no aparecerá en la sección de comentarios de la entrada. Para simplificar el desafío, aquí hay algunas entradas que no tiene que manejar:
Puede suponer que el código no tendrá dos caracteres en la misma columna. Por ejemplo, esta es una entrada que viola esta regla:
a #A character in column one bc #Characters in columns one and two
También puede suponer que todos los caracteres de comentario aparecen en la misma columna. Por ejemplo, esta entrada:
short #this is a short line long #This is a long line
viola esta regla Esto también significa que
#
no estará en la sección de código.Y, por último, no tiene que manejar secciones de código con espacios iniciales o finales. Por ejemplo,
Hello, # World! #
También puede suponer que la entrada solo contiene caracteres ASCII imprimibles.
Ejemplos:
Input:
hello #Line one
#Line two
world! #Line three
Output:
hello world!
Input:
E #This comment intentionally left blank
ac #
h s #
ecti #
on is #
one c #
haracte #
r longer #
than the #
last! #
Output:
Each section is one character longer than the last!
Input:
4 #This number is 7
8 #
15 #That last comment is wrong.
16 #
23 #
42 #
Output:
4815162342
Input:
Hello #Comment 1
world #Comment 2
, #Comment 3
how #Comment 4
are #Comment 5
you? #Comment 6
Output:
Hello world, how are you?
Input:
Prepare #
for... #
extra spaces! #
Output:
Prepare for... extra spaces!
Puede ingresar datos en el formato razonable que desee, por ejemplo, una lista de cadenas, una sola cadena con líneas nuevas, una lista 2d de caracteres, etc. ¡La respuesta más corta en bytes gana!
hello world!
que ha mostrado)? Además, dice : " #
no aparecerá en la sección de comentarios de la entrada ", pero ¿puede ocurrir en el fragmento de código?
do {stuff} while (condition);
con la explicación en orden do while (condition); #Explainything
entonces {stuff} #Explainything
.