Fondo
Los Estados Unidos tienen un amor único por la gerrymandering, la manipulación deliberada de un distrito electoral para predecir ciertos resultados de votación. Recientemente se presentó un caso de gerrymandering ante la Corte Suprema. Gerrymandering, especialmente cuando está relacionado con la raza, se considera ilegal y da como resultado el requisito de volver a dibujar las líneas del distrito.
Dado un mapa rectangular de un municipio (matriz 2d), dibujará líneas de distrito para ayudar a su grupo a obtener la mayor representación. Es decir, usted gerrymander. Cada municipio tiene dos partidos, 0
y 1
. El mapa estará compuesto por cuadrados con uno 0
o 1
sobre ellos. Aquí hay un mapa de ejemplo:
Reto
Agrupará el mapa en distritos para que la 1
parte obtenga al menos el número de distritos especificados por la Entrada.
Entrada
La entrada consistirá en un mapa, el número de distritos que se dibujarán y el número mínimo de distritos que el 1
partido necesita ganar (el puntaje mínimo).
Salida
El resultado será un mapa de los distritos. Cada distrito estará compuesto únicamente por una letra mayúscula del alfabeto. Sí, esto significa que no habrá más de 26 distritos.
Si no hay salida posible donde la parte ingresada gana suficientes distritos, tampoco:
- Imprimir "Intentamos ..."
- Error fatal porque el partido resultó irreparablemente dañado por los resultados electorales
- O ambos
Reglas (también muy importantes)
- Todos los distritos deben ser contiguos.
- Los distritos pueden no tener otros distritos en ellos
- Cada distrito debe tener al menos cuatro nodos. La entrada será coherente con las reglas, lo que significa que habrá al menos
number_of_districts * 4
nodos en el mapa - El puntaje de cada partido es el número de distritos en los que tiene mayoría
- Si un distrito tiene el mismo número de
0
s y1
S, entonces ni los beneficios del partido de ella - Reglas normales de no hacer trampa
- Este es el código de golf , por lo que gana el código más corto en bytes.
Casos de prueba
1. Input 1. Output 2. Input 2. Output 3. Input 3. Output
districts: 5 Image and map districts: 3 Image below districts: 3 fatal error
min wins: 3 min wins: 3 min wins: 3
map: map: map:
00000110000 AAAAAAAAAAA 101101 101101
10000010000 AAAAAAAAAAA 100000 100000
10010000011 AAAAAAAAAAA 011011 011011
11001110000 BBBBBBBAAAA 111111 100111
00111111000 BBBBBBBAAAA
01111111000 CCCCCDDDAAA
01111111001 CCCCCDDDAAA
01000111100 EEEEEDDDDDD
00000001000 EEEEEDDDDDD
Por supuesto, su programa debería funcionar para cualquier caso de prueba válido, no solo para estos.