Este desafío es en honor a los ganadores de la categoría Novato del año de Best of PPCG 2015 : muddyfish (¡porque no soy el idioma que estás buscando! ) Y quartata (por Implementar una máquina de la verdad ). ¡Felicidades!
Fondo
En las trincheras más profundas del océano, vive un raro y esquivo pez de forma cuadrada llamado quartata-fish . Parece el planeador del autómata celular Game of Life. Aquí hay dos peces quartata de diferentes tamaños:
-o-
--o
ooo
--oo--
--oo--
----oo
----oo
oooooo
oooooo
Has logrado tomar una foto del pez quartata, pero el pez es bastante difícil de ver ya que está cubierto de barro. Ahora tendrá que escribir un programa para limpiar la foto.
Entrada
Su entrada es una cuadrícula 2D rectangular de los caracteres .-o#
, dada como una cadena separada por una nueva línea. Si lo desea, puede usar tuberías en |
lugar de líneas nuevas como separadores, y puede suponer un separador final y / o anterior.
La entrada contendrá exactamente un pez quartata de cierta longitud lateral 3*n
, donde n ≥ 1
es un número entero positivo, rodeado de períodos .
que representan el fondo del océano. El pez siempre estará en la orientación representada arriba. Superpuesto en esta cuadrícula, habrá exactamente una región rectangular de hashes no vacía #
, que representa una gota de lodo. La gota puede cubrir al pez quartata parcial o totalmente. Un ejemplo de entrada sería
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Salida
Su salida se generará a partir de la entrada reemplazando todos los hashes con los caracteres .-o
, de modo que la cuadrícula contenga exactamente un pez quartata. Siempre habrá una forma única de realizar este reemplazo correctamente; en particular, la gota de lodo cubrirá completamente a los peces solo si su tamaño es de 3 × 3. La salida utilizará el mismo separador que la entrada. Para la entrada anterior, la salida correcta sería
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten. No hay límites de tiempo: si su envío eventualmente detendría el tiempo y los recursos ilimitados, está bien.
Casos de prueba
Input:
.......
...-o-.
...--o.
##.ooo.
##.....
Output:
.......
...-o-.
...--o.
...ooo.
.......
Input:
...-o-.
...-#o.
...ooo.
.......
Output:
...-o-.
...--o.
...ooo.
.......
Input:
.........
.###.....
.###.....
.ooo.....
Output:
.........
.-o-.....
.--o.....
.ooo.....
Input:
.....
.###.
.###.
.###.
Output:
.....
.-o-.
.--o.
.ooo.
Input:
......
......
......
...###
...###
...###
Output:
......
......
......
...-o-
...--o
...ooo
Input:
###o--....
###o--....
###-oo....
###-oo....
###ooo....
###ooo....
###.......
Output:
--oo--....
--oo--....
----oo....
----oo....
oooooo....
oooooo....
..........
Input:
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Output:
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Input:
...--oo--....
.#########...
.#########...
.#########...
...oooooo....
...oooooo....
.............
.............
Output:
...--oo--....
...--oo--....
...----oo....
...----oo....
...oooooo....
...oooooo....
.............
.............
Input:
..............
..............
.########.....
.########.....
.########-....
.########-....
.########o....
.########o....
.########o....
.########o....
.########.....
..............
Output:
..............
..............
..............
..............
....--oo--....
....--oo--....
....----oo....
....----oo....
....oooooo....
....oooooo....
..............
..............
Input:
.................
.................
..---ooo---......
..--#########....
..--#########....
..--#########....
..--#########....
..--#########....
..oo#########....
..oo#########....
..oo#########....
....#########....
Output:
.................
.................
..---ooo---......
..---ooo---......
..---ooo---......
..------ooo......
..------ooo......
..------ooo......
..ooooooooo......
..ooooooooo......
..ooooooooo......
.................
Input:
.........................
.........................
....----oooo----.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....oooo########.........
....oooo########.........
....oooooooooooo.........
....oooooooooooo.........
.........................
Output:
.........................
.........................
....----oooo----.........
....----oooo----.........
....----oooo----.........
....----oooo----.........
....--------oooo.........
....--------oooo.........
....--------oooo.........
....--------oooo.........
....oooooooooooo.........
....oooooooooooo.........
....oooooooooooo.........
....oooooooooooo.........
.........................
......|......|......|...###|...###|...###
(en caso de que una solución intente todas las coordenadas posibles arriba a la izquierda e intente colocar un 6x6 sobre el área)Respuestas:
Python 2,
433411 bytesSalidas con a
NameError
. Toma la tubería de entrada separada.Estoy mezclando pestañas y espacios aquí. SE no procesa las pestañas correctamente.
(Tenga en cuenta que los espacios adicionales al inicio son solo para la belleza y no están realmente impresos)
fuente
JavaScript (ES6), 291 bytes
Explicación
Toma la cuadrícula de entrada como una cadena separada de nueva línea. No completamente golf, haré más cuando tenga tiempo.
Funciona por:
fuente
Python 2, 325 bytes
Una solución mal desarrollada por ahora: los
for .. in range(...)
s son un completo choque de trenes. Entradas / salidas de cadenas separadas por nueva línea.El recuento de bytes actualmente asume solo sangrías de espacio: más adelante cambiaré a pestañas / espacios mixtos cuando termine de jugar al golf, si es necesario.
fuente