Como programador, probablemente hayas oído hablar de barras inclinadas hacia adelante y hacia atrás. ¿Pero has oído hablar de las reducciones? Ahí es cuando tomas un montón de barras, conectas sus extremos y los dibujas bajando.
Para el desafío de hoy, debe escribir un programa o función que tome una cadena que consiste únicamente en barras, y genera todas esas barras dibujadas hacia abajo en una línea que las conecta. Esto será mucho más claro si ve un ejemplo. Dada la cadena \\\//\/\\
, debe generar:
\
\
\
/
/
\
/
\
\
Aquí hay algunas aclaraciones:
Debe haber una barra oblicua por línea.
La primera línea tendrá 0 espacios iniciales.
Para cada par de barras:
Si son diferentes entre sí, se dibujarán en la misma columna. Por ejemplo,
\/
dará:\ /
Si son del mismo carácter, el inferior está en la dirección apuntada , que se mueve hacia la derecha para una barra diagonal inversa y hacia la izquierda para una barra diagonal hacia adelante. Entonces
\\//
dará\ \ / /
Cada línea puede tener espacios en blanco finales adicionales siempre que esto no cambie la apariencia visual de la salida. Hasta una nueva línea final y líder también es aceptable. ¡ No se permiten espacios iniciales adicionales !
Para mantener esto más simple, puede suponer que la cadena nunca contendrá demasiadas barras diagonales. En otras palabras, ningún prefijo de la entrada contendrá más barras inclinadas que barras invertidas, por lo que una entrada como \\////
o //
nunca se dará. Esto también significa que cada entrada comenzará con una barra invertida.
Si su entrada se toma como un literal de cadena, puede escapar de las barras diagonales inversas si es necesario. Tampoco necesitará manejar una entrada que esté vacía o que contenga caracteres distintos de una barra diagonal.
Puede enviar por cualquier formato razonable .
Como de costumbre, este es un desafío de código de golf , así que trate de hacer la solución más corta posible, incluso si elige un idioma donde esto es bastante difícil. ¡Puntos de bonificación por explicar cualquier técnica interesante que utilizó para quitar bytes!
Ejemplos
#Input
\\\\\\\\\\\
#Output
\
\
\
\
\
\
\
\
\
\
\
#Input
\\\//\\/\//\\///
#Output
\
\
\
/
/
\
\
/
\
/
/
\
\
/
/
/
#Input
\/\/\/
#Output
\
/
\
/
\
/