¿Quieres un reto mayor?
Resuelve en 15:00
Importante: Para que se registre el resultado tienes que iniciar sesión.
Este ejercicio fue usado en una prueba técnica de empleo.
Pares de alfiles atacantes
Enunciado
Adaptado de Daily Coding Problem. Este ejercicio fue preguntado por Google.
En un tablero de ajedrez especial, dos alfiles se atacan entre sí si comparten la misma diagonal. Esto incluye alfiles que tienen otro alfil ubicado entre ellos, es decir, los alfiles pueden atacar a través de otras piezas.
Se te dan N alfiles, representados como pares [fila, columna] en un tablero de M × M. Escribe una función que cuente el número de pares de alfiles que se atacan entre sí. El orden del par no importa: [1, 2] se considera igual a [2, 1].
Por ejemplo, dado m = 5 y la lista de alfiles:
[0, 0]
[1, 2]
[2, 2]
[4, 0]
El tablero se vería así:
[b 0 0 0 0]
[0 0 b 0 0]
[0 0 b 0 0]
[0 0 0 0 0]
[b 0 0 0 0]
Debes devolver 2, ya que los alfiles 1 y 3 se atacan entre sí (misma diagonal principal), así como los alfiles 3 y 4 (misma anti-diagonal).
Ejemplo:
countBishopPairs(5, [][]int{{0,0},{1,2},{2,2},{4,0}}) // 2
countBishopPairs(3, [][]int{}) // 0
Pista: Dos alfiles están en la misma diagonal principal si fila - columna es igual. Están en la misma anti-diagonal si fila + columna es igual.
Restriccionesexpand_more
- Dificultad: Difícil
- Completa todos los test cases para obtener los 100 puntos.
- No modificar la línea
exportal final del archivo. - Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.
Puedes usar fmt.Println() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.