Questa sfida è ispirata a questa app . I casi di test sono presi in prestito da quell'app.
Questa è una sfida con il codice più veloce , in cui l'obiettivo è risolvere i più grandi casi di test nel minor tempo possibile. Sono forniti alcuni casi di test più piccoli, in modo che le persone possano testare i loro algoritmi più velocemente.
Ti verrà data una griglia di input quadrata, di dimensioni n-by-n dove 9 <= n <= 12 . Questa griglia sarà divisa in n aree, dove le celle di ciascuna area hanno identificatori univoci (userò lettere minuscole da al nel testo qui, ma puoi scegliere quello che ti piace, ad esempio numeri interi 1-12 ) .
L'input potrebbe essere simile al seguente (formato di input opzionale):
aabbbbbcc
adddbbbcc
adeeecccc
adddefgcc
hhhdifggg
hdddifffg
hhhiifffg
hihiifffg
iiiiiiggg
Oppure, più facile da visualizzare:
Sfida:
Devi posizionare 2 * n alberi in questo parco, secondo le seguenti regole:
- Ci devono essere esattamente 2 alberi per colonna e 2 alberi per fila
- Tutte le aree devono avere esattamente 2 alberi.
- Nessun albero può essere adiacente ad un altro albero, in verticale, in orizzontale o in diagonale
La soluzione al layout sopra è:
Nota: esiste una sola soluzione per ciascun puzzle
Regole aggiuntive:
- I formati di input e output sono opzionali
- L'output potrebbe ad esempio essere un elenco di indici, una griglia con 1/0 che indica se c'è un albero in quella posizione o una versione modificata dell'input in cui sono indicati gli alberi
- Il tempo di esecuzione deve essere deterministico
- Il programma deve terminare entro 1 minuto sul computer di @ isaacg
- Specifiche: 4 CPU, CPU i5-4300U a 1,9 GHz, 7,5 G di RAM.
- Nel caso in cui il tuo programma non sia in grado di risolvere i due casi di test più grandi in un minuto ciascuno, il tempo per il secondo più grande ( n = 11 ) sarà il tuo punteggio. Perderai contro una soluzione che risolve il caso più grande.
Casi test:
Potrei modificare questo elenco se gli invii sembrano essere personalizzati per adattarsi a questi casi di test.
12 per 12 :
--- Input ---
aaaaabccccdd
aaaaabccccdd
aaaaabbbbddd
eeeafffgbghh
eeaafffgbghh
eefffffggghh
eeefijffghhh
iieiijjjjkhh
iiiiijjjjkhk
lljjjjjjjkkk
llllllkkkkkk
llllllkkkkkk
--- Solution ---
aaaaabcccCdD
aaaaaBcCccdd
aAaaabbbbdDd
eeeaffFgBghh
eeAaFffgbghh
eefffffGgGhh
EeefijffghhH
iiEiIjjjjkhh
IiiiijjjjkHk
lljJjJjjjkkk
lLllllkkKkkk
lllLllKkkkkk
11 per 11 :
--- Input ---
aaaaaaabbcc
adddabbbbcc
edddbbbbbbc
eddddbbbbbb
effffggghhh
effffgghhii
eefffjjhhii
eeeejjjhhii
eeejjjjkiii
jjjjjjkkiii
jjjjjkkkiii
--- Solution ---
aaAaaaabbCc
adddAbBbbcc
eDddbbbbbbC
eddDdBbbbbb
effffggGhHh
eFfffGghhii
eefFfjjhHii
EeeejjjhhiI
eeEjjjjKiii
JjjjJjkkiii
jjjjjkKkIii
10-by-10
--- Input ---
aaaaabccdd
aeaabbbccd
aeaabfbgcd
eeeaafggcd
eeeaafghcd
eeeiifghcd
ieiiigghcd
iiijighhcd
jjjjighhcd
jjjggghhdd
--- Solution ---
aaAaabccdD
aeaaBbBccd
aEaabfbgcD
eeeaaFgGcd
eEeAafghcd
eeeiiFghCd
IeiIigghcd
iiijigHhCd
JjJjighhcd
jjjgGghHdd
9-by-9
--- Input ---
aabbbbbcc
adddbbbcc
adeeecccc
adddefgcc
hhhdifggg
hdddifffg
hhhiifffg
hihiifffg
iiiiiiggg
--- Solution ---
aAbBbbbcc
adddbbBcC
adEeEcccc
AdddefgCc
hhhDiFggg
hDddifffG
hhhiIfFfg
HiHiifffg
iiiiiIgGg
--- Input ---
aaabbbccc
aaaabbccc
aaaddbcce
ffddddcce
ffffddeee
fgffdheee
fggfhhhee
iggggheee
iiigggggg
--- Solution ---
aaAbBbccc
AaaabbcCc
aaaDdBcce
fFddddcCe
fffFdDeee
fGffdheeE
fggfHhHee
IggggheeE
iiIgggGgg
There shall be exactly 2 trees per column, and 2 trees per row
quindi una forza bruta è probabilmente impossibile.