Escriba un programa que tome un bloque rectangular de texto compuesto por X
'sy .
', como este aproximado A
:
......
..XX..
.X..X.
.XXXX.
.X..X.
.X..X.
Imprima una representación de esta cuadrícula girada 45 grados en el sentido contrario a las agujas del reloj dibujando una barra inclinada hacia adelante o hacia atrás según el contexto, en todas partes un X
borde .
al lado de la cuadrícula (con espacios que completan el resto):
/\/\
/ /\ \
\/ / \
/\/ /\ \
\ / \/
\ \
\ \
\/
El número de espacios iniciales y finales (y nuevas líneas) no importa siempre que X
las barras mantengan la forma de los 's en la entrada. Está bien recortar filas o columnas adicionales de .
's.
Para E / S, puede usar cualquier combinación de parámetros stdin / stdout / files / command line. Por ejemplo, su secuencia de comandos puede tomar un nombre de archivo del X.
patrón y reescribir el archivo con el patrón de barra diagonal. O su script puede tomar el X.
patrón de stdin línea por línea (presionando d
cuando haya terminado) y generar el resultado en stdout.
La entrada puede ser arbitrariamente grande, pero puede suponer que siempre está bien formateada.
No hay caracteres además / \
y las nuevas líneas deben estar en cualquier salida.
Tanteo
El código más corto en bytes gana. Use https://mothereff.in/byte-counter como contador de bytes si usa caracteres no ASCII.
Bonificación: menos 50 bytes si puede cambiar (reemplazar, no eliminar) un carácter en su programa para que la barra diagonal gire 45 grados en sentido horario , por ejemplo:
/\/\
/ /\ \
/ \ \/
/ /\ \/\
\/ \ /
/ /
/ /
\/
Muestras de entrada
XXXXXXXXX
X.......X
X.XXXXX.X
X.X...X.X
X.X.X.X.X
X.X...X.X
X.XXXXX.X
X.......X
XXXXXXXXX
XXX...XXX....XXX...XXX
X..X..X..X..X.....X...
XXX...XXX...X.....X.XX
X.....X.....X.....X..X
X.....X......XXX...XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...X
X...X...............X...............X...........X...................X...X
X...X...XXXXXXXXX...X...XXXXX...XXXXXXXXX...XXXXX...XXXXX...XXXXX...X...X
X...............X.......X...X...........X...........X...X...X.......X...X
XXXXXXXXX...X...XXXXXXXXX...XXXXXXXXX...XXXXX...X...X...X...XXXXXXXXX...X
X.......X...X...............X...........X...X...X...X...X...........X...X
X...X...XXXXXXXXXXXXX...X...X...XXXXXXXXX...XXXXX...X...XXXXXXXXX...X...X
X...X...............X...X...X.......X...........X...........X.......X...X
X...XXXXXXXXXXXXX...XXXXX...XXXXX...X...XXXXX...XXXXXXXXX...X...XXXXX...X
X...........X.......X...X.......X...X.......X...........X...X...........X
X...XXXXX...XXXXX...X...XXXXX...X...XXXXXXXXX...X...X...X...XXXXXXXXXXXXX
X.......X.......X...X...X.......X.......X.......X...X...X.......X.......X
XXXXXXXXXXXXX...X...X...X...XXXXXXXXX...X...XXXXX...X...XXXXX...XXXXX...X
X...........X...X...........X.......X...X.......X...X.......X...........X
X...XXXXX...X...XXXXXXXXX...XXXXX...X...XXXXX...XXXXX...XXXXXXXXXXXXX...X
X...X.......X...........X...........X.......X...X...X...............X...X
X...X...XXXXXXXXX...X...XXXXX...XXXXXXXXX...X...X...XXXXXXXXXXXXX...X...X
X...X...........X...X...X...X...X...........X...............X...X.......X
X...XXXXXXXXX...X...X...X...XXXXX...XXXXXXXXX...XXXXXXXXX...X...XXXXXXXXX
X...X.......X...X...X...........X...........X...X.......X...............X
X...X...XXXXX...XXXXX...XXXXX...XXXXXXXXX...XXXXX...X...XXXXXXXXX...X...X
X...X...................X...........X...............X...............X...X
X...XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Preguntas relacionadas:
Dibuje la curva de Hilbert con barras
Alinee una forma ASCII horizontalmente alineada y en ángulo recto a lo largo de una diagonal
Respuestas:
Python 2 -
236, 228, 226, 221, 250, 248246 - 50 = 196Agregué la función de bonificación opcional que cambia la dirección de las agujas del reloj a las agujas del reloj. Básicamente, la segunda línea simplemente gira la entrada 90 grados. Para cambiar entre ambas opciones, reemplácelo
s=zip(...)
por algo comoS=zip(...)
(es decir, asigne a una variable que no se volverá a utilizar).fuente
s
conB
bys=B+s+B
.MATLAB - 286 - 50 = 236
Minified:
Expandido:
El código se puede reducir aún más en 6 caracteres (para vincular el plomo actual) eliminando el reparto para escribir
char
, pero esto da como resultado una advertencia de MATLAB, y no estaba seguro de si eso estaba permitido.Se puede reducir en 13 caracteres adicionales si se requiere que la entrada tenga un formato "marcado" como
['X..';'.X.';'..X']
, pero tampoco pensé que esto estaba permitido. Actualmente, el script solo acepta dos números (dimensiones de fila y columna) y luego se lee en una sola cadena de caracteres de cuadrícula.Prima
Al cambiar el
1
en la llamadax = rot90( ..., 1 );
a a0
, la transformación cambia de una rotación CCW 45 ° a una rotación CW 45 °. De hecho, todas las rotaciones posibles de 45 ° + n · 90 ° son posibles al pasar este parámetro de0
a3
.Resultados de muestra:
fuente
Perl - 409
Lee desde stdin e imprime en stdout.
Salidas de ejemplo:
fuente