Te dan una cuadrícula rectangular de los personajes .
y #
, así:
..........
..#.......
....#..#..
...#......
..........
Su tarea es llenar todo el cuadro delimitador alineado con el eje #
con #
:
..........
..######..
..######..
..######..
..........
El cuadro delimitador alineado con el eje es el rectángulo más pequeño que contiene todo el #
.
¿Quieren más? ¡Prueba la parte II!
Reglas
Puede utilizar dos caracteres ASCII imprimibles distintos (0x20 a 0x7E, inclusive), en lugar de #
y .
. Sin embargo , continuaré refiriéndome a ellos como #
y .
para el resto de la especificación.
La entrada y la salida pueden ser una sola cadena separada por salto de línea o una lista de cadenas (una para cada línea), pero el formato debe ser coherente.
Puede suponer que la entrada contiene al menos una #
y todas las líneas tienen la misma longitud.
Puede escribir un programa o una función y utilizar cualquiera de nuestros métodos estándar para recibir entradas y proporcionar salidas.
Puede usar cualquier lenguaje de programación , pero tenga en cuenta que estas lagunas están prohibidas de forma predeterminada.
Este es el código de golf , por lo que gana la respuesta válida más corta, medida en bytes .
Casos de prueba
Cada caso de prueba tiene entrada y salida una al lado de la otra.
# #
... ...
#.. #..
... ...
... ...
#.. ###
..# ###
.#. ###
#.. ###
..# ###
..... .....
.#.#. .###.
..... .....
... ...
.#. .#.
... .#.
.#. .#.
... ...
.......... ..........
.......... ..........
....#..... ....#.....
.......... ..........
.......... ..........
.......... ..........
....#..... ...##.....
...#...... ...##.....
.......... ..........
..#....... ..###.....
....#..... ..###.....
...#...... ..###.....
.......... ..........
..#....... ..######..
....#..#.. ..######..
...#...... ..######..
.........# ..########
..#....... ..########
....#..#.. ..########
...#...... ..########
Respuestas:
VBA Excel,
150 bytes146 bytesInstrucción:
Cree un libro de trabajo con dos hojas de trabajo en blanco: Hoja1 y Hoja2. Establezca la entrada en Sheet1 y luego coloque el siguiente código en el módulo de código Sheet1
Ungolfed el código:
Explicación:
Ejemplo de E / S:
Advertencia: asegúrese de que cada celda de Sheet2 siempre esté en blanco cada vez que ejecute el programa.
fuente
=C.Value
en la primera línea ser="#"
?05AB1E ,
70686961586040 bytesExplicación
Pruébalo en línea
fuente
Mathematica,
9170 bytes21 bytes guardados debido a @MartinEnder .
Función anónima. Toma una matriz de caracteres como entrada y devuelve una matriz de caracteres como salida. El carácter Unicode es U + F3C7 para
\[Transpose]
.fuente
C #,
262251bytesLo jugaré más cuando tenga más tiempo.
Se compila en a
Func<string[], string[]>
.Versión formateada:
fuente
Jalea ,
21191817 bytesEste es un programa completo. La entrada y la salida son cadenas de 0 y 1 , delimitadas por saltos de línea.
Pruébalo en línea! o verificar todos los casos de prueba .
Cómo funciona
fuente
Retina , 87 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Usos
A
para.
yZ
para#
.Pruébalo en línea!
fuente
Scala, 317 caracteres
Versión más legible, probablemente podría haber jugado más al golf:
fuente
JavaScript (ES6), 168 bytes
Toma la entrada como una cadena multilínea. Funciona al quitar recursivamente los
.
s iniciales y finales de todas las líneas hasta que al menos una línea comience y una termine con una#
, luego selecciona tantas líneas como sea posible pero comienza y termina en las líneas que contienen#
y cambia todas las.
s a#
. Probablemente fácilmente golfable.fuente
R,
158155bytesEste programa toma puntos de entrada
.
y hashtags#
, línea por línea.Sin golf:
Aquí están los detalles de la tercera línea:
fuente
PowerShell v3 +,
215162148144139 bytesToma la entrada como una matriz de cadenas
$n
, en0
lugar de.
y en1
lugar de#
. Luego, recorremos$n
cada iteración probando si la cadena actual es más pequeña que0
(es decir, hay una1
en ella), y si es así, genera una cadena. Utiliza un pseudoternario en lugar de una operaciónif
/else
.La cadena se construye a partir de bucles a través del ancho de la cadena de entrada. Cada iteración, añadimos una
0
o una1
dependiendo de si1
se encuentra en algún lugar de la columna vertical correspondiente. Para el último caso de prueba, por ejemplo, esto dará como resultado una cadena como0011001001
. Requiere v3 + para-in
operador. Esa cadena se combina con un reemplazo de expresión regular elegante para reemplazar cualquier s "interno"0
con1
s. Muchas gracias a Business Cat en el chat por la ayuda en eso. Nuestra cuerda estaría0011111111
en este punto.De lo contrario, genera la cadena actual (todos ceros)
$_
.Las cadenas resultantes se dejan en la tubería, y la salida es implícita. El valor predeterminado
Write-Output
para una matriz de cadenas es con una nueva línea entre cada elemento, por lo que eso es visualmente lo que sucede.Ejemplos
fuente
Python,
219212 bytes(Aunque creo que otro método puede ser más corto)
Toma y devuelve una lista de la lista de caracteres.
Pruébalo en ideoone
fuente
Perl 6 , 62 bytes
Una rutina anónima a la que se le puede pasar una matriz de matrices de caracteres (que representa la matriz) como argumento, y la modifica en el lugar para que el alcance de la llamada tenga la matriz modificada después.
Se utiliza en
a
lugar de#
como el carácter "activado". El carácter "apagado" puede ser cualquier cosa, no le importa.fuente
Python 3, 153 bytes
Entrada y salida son una lista de cadenas.
sin golf
teoría de operación
La idea principal es eliminar filas y columnas alrededor del exterior de la matriz si no tienen un '#'. Lo que queda debe rellenarse con '#' s.
Se implementa utilizando una función recursiva.
Caso 1: la fila 0 no contiene un '#'. El resultado es la fila 0 + llamada recursiva en las filas restantes.
Caso 2: la fila 0 contiene un '#'. No se pueden eliminar más filas. Gire la matriz cw para que la columna 0 sea ahora la fila 0. Luego, procese recursivamente la matriz girada. El resultado es girado hacia la izquierda.
Caso base: la matriz se ha girado 4 veces, lo que significa que todas las filas / columnas externas se han eliminado si es posible. Lo que quede debe llenarse con '#' s
fuente
Perl, 51 bytes
Incluye +2 para
-0p
Dar entrada en STDIN, el carácter apagado es
A
, el carácter encendido esa
, por ejemplo:bounding.pl
:Mismo largo:
fuente
Python 2, 184 bytes
Entrada y salida son una lista de cadenas.
Pruébelo en Ideone (tenedor de la página de prueba de Jonathan Allan)
fuente
Pyth , 50 bytes
Pruébalo en línea!
fuente