Dada una entrada de una imagen de arte ASCII, muestra el arte ASCII en cursiva.
Para poner en cursiva el arte ASCII:
Inserte cero espacios antes de la última línea, un espacio antes de la penúltima línea, dos espacios antes de la tercera última línea, etc.
Elimine cualquier espacio en blanco inicial adicional que pueda haberse creado. Es decir, si cada línea tiene al menos
n
espacios que la preceden, eliminen
espacios desde el principio de cada línea.Reemplace todas las
\
s con|
, todas las|
s con/
, y todas las/
s con_
. Mantener existentes_
s igual.La entrada está garantizada para contener solo los caracteres
\|/_
y el espacio.
Por ejemplo, la entrada
/\/\/\ /\/\/\ /\/\/\ /\/\/\
/\ /\ /\ /\ /\ /\
/\/\/\ /\/\/\ /\ /\ /\/\
/\ /\ /\ /\ /\
/\ /\ /\/\/\ /\/\/\
debe salir
_|_|_| _|_|_| _|_|_| _|_|_|
_| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_|
_| _| _| _| _|
_| _| _|_|_| _|_|_|
que a su vez, provisto como entrada, salidas
_/_/_/ _/_/_/ _/_/_/ _/_/_/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/_/
_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/
que daría salida
______ ______ ______ ______
__ __ __ __ __ __
______ ______ __ __ ____
__ __ __ __ __
__ __ ______ ______
La entrada y la salida pueden ser una sola cadena (con una nueva línea final opcional) o una matriz de líneas.
Como se trata de code-golf , ganará el código más corto en bytes.
Casos de prueba adicionales:
|||||
/////
\\\\\
_____
/////
_____
|||||
_____
________
________
(es decir, la entrada de una cadena vacía da como resultado la salida de una cadena vacía)
Respuestas:
CJam,
4338 bytesRequiere que la entrada se rellene en un rectángulo.
Pruébalo en línea!
Explicación
fuente
G
, la transformación lo colapsará a la parte superior.Pyth, 32
Pruébelo aquí o ejecute Test Suite
Cada línea tiene varios espacios finales. Esto funciona aplicando
.r
cuál es la rotación incorporada a cada línea de la cadena. La rotación toma cada carácter en la cadena que coincide con uno en el otro argumento"\|/__"
y lo reemplaza con el siguiente carácter. El doble guión bajo evita que los guiones bajos se conviertan en barras invertidas. Las cadenas también se rellenan según su índice.Una vez hecho esto, las líneas se comprimen juntas, luego filtramos cada columna que solo contiene espacios, hasta que una de ellas no. Luego descomprimimos y nos unimos en nuevas líneas.
fuente
MATL ,
383329 bytesLas líneas de salida tienen espacios finales para coincidir con la línea más larga (esto lo permite el desafío).
La entrada es una matriz de celdas (lista) de cadenas. La matriz usa llaves, y las cadenas usan comillas simples, de la siguiente manera (haga clic en cada enlace para ¡ Pruébelo en línea! ).
Primer ejemplo :
Segundo ejemplo :
Tercer ejemplo :
Explicación
La matriz se voltea inicialmente. Cada cadena se procesa en un bucle y la cadena modificada se inserta en la pila. El procesamiento consiste en reemplazar los caracteres y agregar varios espacios. El número de espacios es igual al número actual de elementos en la pila (gracias al hecho de que la matriz se ha volteado).
Después del bucle, las cadenas se recopilan en una matriz, que se voltea, se convierte en una matriz de caracteres 2D y se eliminan los espacios iniciales no deseados: espacios iniciales que están presentes en todas las filas de la matriz de caracteres 2D.
fuente
JavaScript (ES6),
171149148 bytesAcepta y devuelve líneas como un conjunto de cadenas.
Editar: Guardado 22 bytes gracias a @ user81655. Se guardó 1 byte al darse cuenta de que la entrada está limitada a los 5 caracteres
\|/_
y al espacio.fuente
replace
s pueden combinarse.replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)])
,match(/ */)
pueden sermatch` *`
, los primeros dosmap
s pueden combinarsea.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),...
, los paréntesis externos ((a=...)
) ahora pueden eliminarse. 149 bytes:a=>a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),n=i=a.length).map(s=>s.slice(n).replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]))
replace
.)Dyalog APL (versiones anteriores),
2348 bytesAjustar el espacio en blanco es costoso:
Esto requiere
⎕ML←0
, que era predeterminado hasta hace poco .fuente