Todos los desafíos
Intermedio 0 resueltos 0% de aceptación

Dos caballos que no se atacan

Cuenta las formas seguras de colocar dos caballos para cada tamaño de tablero cuadrado.

Para cada tamaño de tablero k desde 1 hasta n, cuenta los pares no ordenados de casillas distintas en un tablero de k por k donde dos caballos no puedan atacarse entre sí. Un caballo se mueve dos casillas en un eje y una en el otro.

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

K marca un caballo y x sus posibles destinos, cuando esas casillas están dentro del tablero. Intercambiar los dos caballos no genera una colocación diferente.

Implementa two_knights(n).

Entrada

n: El mayor tamaño de tablero a considerar.

Salida

Devuelve n conteos en orden, para los tamaños de tablero desde 1 hasta n.

Restricciones

1 ≤ n ≤ 10,000. Los conteos caben en enteros con signo de 64 bits.

Ejemplos

Ejemplo 1
Entrada:
n = 3

Salida esperada:
expected = [0, 6, 28]
Entrada:
long long n = 3;

Salida esperada:
std::vector<long long> expected = {0, 6, 28};
Entrada:
long n = 3;

Salida esperada:
long[] expected = new long[] {0, 6, 28};

Explicación

Un tablero de 1 × 1 no puede contener dos caballos. Un tablero de 2 × 2 tiene seis pares y ningún ataque. Un tablero de 3 × 3 tiene 36 pares, de los cuales ocho se atacan, quedando 28.

Ejemplo 2
Entrada:
n = 1

Salida esperada:
expected = [0]
Entrada:
long long n = 1;

Salida esperada:
std::vector<long long> expected = {0};
Entrada:
long n = 1;

Salida esperada:
long[] expected = new long[] {0};

Explicación

Se requieren dos casillas distintas, pero el tablero solo tiene una.

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.