Entrada:
Una matriz 2D que contiene dos valores distintos (opcionales). Usaré 0 y 1 cuando explique las reglas. El formato de entrada es, por supuesto, flexible.
Desafío:
Los ceros son agua y los unos son islas. Para garantizar la soledad, su tarea es rodear todas las islas con agua insertando filas y columnas de ceros. No desea desperdiciar agua, por lo que debe minimizar la cantidad de agua agregada. En caso de que haya más de una solución que requiera la misma cantidad de agua agregada, entonces debe agregar columnas de agua, no filas. Mostraré esto en los casos de prueba.
Salida:
La nueva matriz 2D modificada. El formato de salida es, por supuesto, flexible.
Casos de prueba:
La entrada y la salida están separadas por guiones. Los ceros agregados se muestran en negrita. Utilice una de las respuestas aquí si desea convertir los casos de prueba a formatos más convenientes.
1
---
1
1 1
---
1 0 1
1 1
1 1
---
1 0 1
0 0 0
1 0 1
1 0
0 1
---
1 0 0
0 0 1
Tenga en cuenta que agregamos una columna de ceros, no una fila de ceros. Esto se debe a que el número de ceros necesarios es igual y se deben preferir las columnas.
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
---
1 0 0 0 1
0 0 0 0 0
0 1 0 1 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 1 0 1 0
Tenga en cuenta que agregamos filas, no columnas, ya que eso requiere la menor cantidad de ceros adicionales.
0 0 1 0 0
0 1 1 1 0
---
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 1 0
Esto requería tanto columnas como una fila.
0 0 1 0 0
0 1 0 1 0
---
0 0 0 1 0 0 0
0 1 0 0 0 1 0
Es mejor agregar dos columnas que una fila, ya que requiere menos agua.
0 0
1 0
0 1
1 0
0 0
---
0 0
1 0
0 0
0 1
0 0
1 0
0 0
Es mejor agregar dos filas que una columna, ya que requiere menos agua.
fuente
Respuestas:
Jalea , 37 bytes
Pruébalo en línea!
Función que devuelve una matriz 2D de enteros. Tenga en cuenta que, naturalmente, en Jelly la lista singleton se muestra como su valor, por lo que
G
se utiliza para formatear la salida.El programa se ejecuta en tiempo exponencial, pero hasta ahora no se me ocurrió ningún algoritmo de tiempo polinómico. Usos
Ƥ
en la función diádica, esa característica es posterior al desafío.fuente
Python 2 ,
374346340339323317 bytesPruébalo en línea!
fuente
[:]
se puede eliminar sin afectar la salida.