Imaginez une grille de carrés W par H qui s'enroule toroïdalement. Les éléments sont placés sur la grille comme suit.
Le premier élément peut être placé sur n'importe quelle case, mais les éléments suivants ne doivent pas être à une distance Manhattan R de tout élément précédent (également connu sous le nom de quartier Von Neumann de la gamme R ). Le choix judicieux des positions permet de placer un grand nombre d'articles sur la grille avant qu'il n'y ait plus de positions valides. Cependant, considérez plutôt l'objectif inverse: quel est le plus petit nombre d'articles pouvant être placés et ne laisser aucune autre position valide?
Voici une zone d'exclusion de rayon 5:
Voici une autre zone d'exclusion de rayon 5, cette fois près des bords, donc le comportement d'enveloppement est apparent:
Contribution
Trois entiers:
- W : largeur de la grille (entier positif)
- H : hauteur de la grille (entier positif)
- R : rayon de la zone d'exclusion (entier non négatif)
Production
Un entier N , qui est le plus petit nombre d'éléments pouvant être placés, empêchant tout autre placement valide.
Détails
- Un rayon de zéro donne une zone d'exclusion de 1 carré (celle sur laquelle l'objet a été placé).
- Un rayon de N exclut la zone qui peut être atteinte en N pas orthogonaux (rappelez-vous que les bords s'enroulent toroïdalement).
Votre code doit fonctionner pour le cas trivial de R = 0, mais n'a pas besoin de fonctionner pour W = 0 ou H = 0.
Votre code doit aussi faire face au cas où R > W ou R > H .
Délai et cas de test
Votre code doit être capable de gérer tous les cas de test, et chaque cas de test doit se terminer dans les 5 minutes. Cela devrait être facile (l'exemple de solution JavaScript prend quelques secondes pour chaque cas de test). La limite de temps est principalement d'exclure l'approche extrême de la force brute. L'exemple d'approche est encore assez brutal.
Si votre code se termine dans les 5 minutes sur une machine mais pas sur une autre, ce sera assez proche.
Cas de test sous la forme entrées: sortie en tant queW 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
Extrait pour aider à visualiser et à jouer avec les idées
Exemple de solution (non golfée)
Juste un exemple pour les petites sorties (résultant d'un rayon pas beaucoup plus petit que la largeur et la hauteur). Peut gérer n'importe lequel des cas de test, mais expirera et abandonnera pour la plupart des cas plus grands.