Cuente el número total de casillas que puede visitar Bishop en un movimiento

Dada la posición de un alfil en un tablero de ajedrez de 8 * 8 , la tarea es contar el número total de casillas que puede visitar el alfil en un solo movimiento. La posición del alfil se indica mediante el número de fila y columna del tablero de ajedrez. 
Ejemplos: 
 

Entrada: Fila = 4, Columna = 4 
Salida: 13
Entrada: Fila = 1, Columna = 1 
Salida:
 

Aproximación: en el juego de ajedrez, un alfil solo puede moverse en diagonal y no hay restricción de distancia para cada movimiento.
 

Por lo tanto, también podemos decir que Bishop puede moverse de cuatro maneras, es decir, en diagonal arriba a la izquierda, arriba a la derecha, abajo a la izquierda y abajo a la derecha desde la posición actual.
Podemos calcular el número de casillas visitadas en cada jugada por: 
 

Total de cuadrados visitados en el movimiento superior izquierdo = min(r, c) – 1 
Total de cuadrados visitados en el movimiento superior derecho = min(r, 9 – c) – 1 
Total de cuadrados visitados en el movimiento inferior izquierdo = 8 – max(r, 9 – c) 
Total de casillas visitadas en el movimiento inferior derecho = 8 – max(r, c) 
donde, r y c son las coordenadas de la posición actual del alfil en el tablero de ajedrez. 
 

A continuación se muestra la implementación del enfoque anterior:
 

C++

// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the count of
// total positions the Bishop
// can visit in a single move
int countSquares(int row, int column)
{
 
    // Count top left squares
    int topLeft = min(row, column) - 1;
 
    // Count bottom right squares
    int bottomRight = 8 - max(row, column);
 
    // Count top right squares
    int topRight = min(row, 9 - column) - 1;
 
    // Count bottom left squares
    int bottomLeft = 8 - max(row, 9 - column);
 
    // Return total count
    return (topLeft + topRight + bottomRight + bottomLeft);
}
 
// Driver code
int main()
{
 
    // Bishop's Position
    int row = 4, column = 4;
 
    cout << countSquares(row, column);
 
    return 0;
}

Java

// Java implementation of above approach
class GFG {
 
    // Function to return the count of
    // total positions the Bishop
    // can visit in a single move
    static int countSquares(int row, int column)
    {
 
        // Count top left squares
        int topLeft = Math.min(row, column) - 1;
 
        // Count bottom right squares
        int bottomRight = 8 - Math.max(row, column);
 
        // Count top right squares
        int topRight = Math.min(row, 9 - column) - 1;
 
        // Count bottom left squares
        int bottomLeft = 8 - Math.max(row, 9 - column);
 
        // Return total count
        return (topLeft + topRight + bottomRight + bottomLeft);
    }
 
    // Driver code
    public static void main(String[] args)
    {
 
        // Bishop's Position
        int row = 4, column = 4;
 
        System.out.println(countSquares(row, column));
    }
}

C#

// C# implementation of above approach
using System;
class GFG {
 
    // Function to return the count of
    // total positions the Bishop
    // can visit in a single move
    static int countSquares(int row, int column)
    {
 
        // Count top left squares
        int topLeft = Math.Min(row, column) - 1;
 
        // Count bottom right squares
        int bottomRight = 8 - Math.Max(row, column);
 
        // Count top right squares
        int topRight = Math.Min(row, 9 - column) - 1;
 
        // Count bottom left squares
        int bottomLeft = 8 - Math.Max(row, 9 - column);
 
        // Return total count
        return (topLeft + topRight + bottomRight + bottomLeft);
    }
 
    // Driver code
    public static void Main()
    {
 
        // Bishop's Position
        int row = 4, column = 4;
 
        Console.WriteLine(countSquares(row, column));
    }
}

Python3

# Python3 implementation of above approach
 
# Function to return the count of
# total positions the Bishop
# can visit in a single move
def countSquares(row, column):
     
    # Count top left squares
    topLeft = min(row, column) - 1
     
    # Count bottom right squares
    bottomRight = 8 - max(row, column)
     
    # Count top right squares
    topRight = min(row, 9-column) -1
     
    # Count bottom left squares
    bottomLeft = 8 - max(row, 9-column)
 
     
    # Return total count
    return (topLeft + topRight + bottomRight + bottomLeft)
 
# Driver code
 
# Bishop's Position
row = 4
column = 4
 
print(countSquares(row, column))

PHP

<?php
// PHP implementation of above approach
 
// Function to return the count of
// total positions the Bishop
// can visit in a single move
function countSquares($row, $column)
{
 
    // Count top left squares
    $topLeft = min($row, $column) - 1;
 
    // Count bottom right squares
    $bottomRight = 8 - max($row, $column);
 
    // Count top right squares
    $topRight = min($row, 9 - $column) - 1;
 
    // Count bottom left squares
    $bottomLeft = 8 - max($row, 9 - $column);
 
    // Return total count
    return ($topLeft + $topRight +
            $bottomRight + $bottomLeft);
}
 
// Driver code
 
// Bishop's Position
$row = 4;
$column = 4;
echo countSquares($row, $column);
 
// This code is contributed by jit_t
?>

Javascript

<script>
 
// Javascript implementation of above approach
 
// Function to return the count of
// total positions the Bishop
// can visit in a single move
function countSquares(row, column)
{
 
    // Count top left squares
    var topLeft = Math.min(row, column) - 1;
 
    // Count bottom right squares
    var bottomRight = 8 - Math.max(row, column);
 
    // Count top right squares
    var topRight = Math.min(row, 9 - column) - 1;
 
    // Count bottom left squares
    var bottomLeft = 8 - Math.max(row, 9 - column);
 
    // Return total count
    return (topLeft + topRight + bottomRight + bottomLeft);
}
 
// Driver code
// Bishop's Position
var row = 4, column = 4;
document.write( countSquares(row, column));
 
</script>
Producción: 

13

 

Complejidad de tiempo: O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por ihritik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *