Immagina una W di H griglia di quadrati che si avvolge toroidalmente. Gli articoli vengono posizionati sulla griglia come segue.
Il primo oggetto può essere posizionato su qualsiasi quadrato, ma gli oggetti successivi non devono trovarsi a una distanza R di Manhattan da nessun elemento precedente (noto anche come un quartiere Von Neumann dell'intervallo R ). La scelta accurata delle posizioni consente di adattare un gran numero di elementi alla griglia prima che non vi siano più posizioni valide. Tuttavia, considera invece l'obiettivo opposto: qual è il numero più basso di oggetti che possono essere posizionati e non lasciare ulteriori posizioni valide?
Ecco una zona di esclusione raggio 5:
Ecco un'altra zona di esclusione del raggio 5, questa volta vicino ai bordi, quindi il comportamento di avvolgimento è evidente:
Ingresso
Tre numeri interi:
- W : larghezza della griglia (numero intero positivo)
- H : altezza della griglia (numero intero positivo)
- R : raggio della zona di esclusione (numero intero non negativo)
Produzione
Un numero intero N , che è il numero più piccolo di elementi che è possibile posizionare evitando ulteriori posizionamenti validi.
Dettagli
- Un raggio di zero indica una zona di esclusione di 1 quadrato (quella su cui è stato posizionato l'oggetto).
- Un raggio di N esclude la zona che può essere raggiunta in N passaggi ortogonali (ricordare che i bordi si avvolgono toroidalmente).
Il tuo codice deve funzionare per il banale caso di R = 0, ma non deve funzionare per W = 0 o H = 0.
Il tuo codice deve anche occuparsi del caso in cui R > W o R > H .
Termine e casi di test
Il codice deve essere in grado di gestire tutti i casi di test e ciascun caso di test deve essere completato entro 5 minuti. Questo dovrebbe essere semplice (l'esempio della soluzione JavaScript richiede alcuni secondi per ogni caso di test). Il limite di tempo è principalmente quello di escludere l'approccio della forza bruta estrema. L'approccio di esempio è ancora abbastanza bruto.
Se il codice viene completato entro 5 minuti su un computer ma non su un altro, sarà abbastanza vicino.
Casi di test negli input del modulo: output asW H R : N
5 4 4 : 1
5 4 3 : 2
5 4 2 : 2
5 4 1 : 5
7 5 5 : 1
7 5 4 : 2
7 5 3 : 2
7 5 2 : 4
8 8 8 : 1
8 8 7 : 2
8 8 6 : 2
8 8 5 : 2
8 8 4 : 2
8 8 3 : 4
7 6 4 : 2
7 6 2 : 4
11 7 4 : 3
11 9 4 : 4
13 13 6 : 3
11 11 5 : 3
15 14 7 : 2
16 16 8 : 2
Snippet per aiutare a visualizzare e giocare con le idee
Soluzione di esempio (non golfizzata)
Solo un esempio per piccoli output (risultanti da un raggio non molto inferiore alla larghezza e all'altezza). Può gestire uno qualsiasi dei casi di test, ma si interromperà e rinuncerà ai casi più grandi.