Tous les défis
Moyen 0 résolus 0 % de réussite

Deux Cavaliers Non-Attaquants

Comptez les placements sûrs de deux cavaliers pour chaque taille de plateau carré.

Pour chaque taille de plateau k de 1 à n, comptez le nombre de paires non ordonnées de cases distinctes sur un plateau k par k où deux cavaliers ne peuvent pas s'attaquer. Un cavalier se déplace de deux cases dans un axe et d'une case dans l'autre.

. x . x .
x . . . x
. . K . .
x . . . x
. x . x .

K indique un cavalier et x ses destinations possibles, lorsque ces cases se trouvent sur le plateau. Intervertir les deux cavaliers ne crée pas un nouveau placement.

Implémentez two_knights(n).

Entrée

n : La plus grande taille de plateau à considérer.

Sortie

Retournez n valeurs dans l'ordre, pour les tailles de plateau de 1 à n.

Contraintes

1 ≤ n ≤ 10 000. Les résultats tiennent dans des entiers signés 64 bits.

Exemples

Exemple 1
Entrée :
n = 3

Sortie attendue :
expected = [0, 6, 28]
Entrée :
long long n = 3;

Sortie attendue :
std::vector<long long> expected = {0, 6, 28};
Entrée :
long n = 3;

Sortie attendue :
long[] expected = new long[] {0, 6, 28};

Explication

Un plateau 1 × 1 ne peut pas contenir deux cavaliers. Un plateau 2 × 2 possède six paires et aucune attaque. Un plateau 3 × 3 possède 36 paires, dont huit sont des attaques, ce qui en laisse 28.

Exemple 2
Entrée :
n = 1

Sortie attendue :
expected = [0]
Entrée :
long long n = 1;

Sortie attendue :
std::vector<long long> expected = {0};
Entrée :
long n = 1;

Sortie attendue :
long[] expected = new long[] {0};

Explication

Deux cases distinctes sont requises, mais le plateau n'en possède qu'une seule.

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.