sfondo
Gli Stati Uniti hanno un amore unico per la gerrymandering - la deliberata manipolazione di un distretto elettorale per prevedere determinati risultati di voto. Proprio di recente c'è stato un caso gerrymandering portato davanti alla Corte Suprema. Il gerrymandering, specialmente se legato alla razza, è dichiarato illegale e comporta l'obbligo di ridisegnare le linee distrettuali.
Data una mappa rettangolare di un comune (2d array), traccerai delle linee distrettuali per aiutare il tuo gruppo a ottenere la maggior rappresentazione. Cioè, farai il gerrymander. Ogni comune ha due parti 0
e 1
. La mappa sarà composta da quadrati con uno 0
o 1
su di essi. Ecco una mappa di esempio:
Sfida
Raggrupperai la mappa in distretti in modo che la 1
parte ottenga almeno il numero di distretti specificato dall'Input.
Ingresso
L'input consisterà in una mappa, il numero di distretti da disegnare e il numero minimo di distretti che il 1
partito deve vincere (il punteggio minimo).
Produzione
L'output sarà una mappa dei distretti. Ogni distretto sarà composto in modo univoco da una lettera maiuscola dell'alfabeto. Sì, questo significa che non ci saranno più di 26 distretti.
Se non è possibile alcun output in cui la parte immessa vince abbastanza distretti, sia:
- Stampa "Abbiamo provato ..."
- Errore fatale perché il partito è stato irrimediabilmente ferito dai risultati delle elezioni
- O entrambi
Regole (anche molto importanti)
- Tutti i distretti devono essere contigui
- I distretti potrebbero non avere altri distretti in essi
- Ogni distretto deve contenere almeno quattro nodi. L'input sarà coerente con le regole, il che significa che ci saranno almeno
number_of_districts * 4
nodi nella mappa - Il punteggio di ciascuna parte è il numero di distretti in cui ha la maggioranza
- Se un distretto ha lo stesso numero di
0
s ed1
S, né benefici partito da esso - Regole normali senza barare
- Questo è code-golf , quindi vince il codice più breve in byte.
Casi test
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
Naturalmente, il tuo programma dovrebbe funzionare per qualsiasi caso di test valido, non solo per questi.