Example #1
0
function laser($inimigos)
{
    if (empty($inimigos)) {
        return 0;
    }
    $linhas = $colunas = array();
    foreach ($inimigos as $inimigo) {
        if (!isset($linhas[$inimigo->x])) {
            $linhas[$inimigo->x] = 0;
        }
        if (!isset($colunas[$inimigo->y])) {
            $colunas[$inimigo->y] = 0;
        }
        $linhas[$inimigo->x]++;
        $colunas[$inimigo->y]++;
    }
    // Escolhe qual linha ou coluna atirar
    if (count($linhas) < count($colunas)) {
        $maiorLinha = array_search(max($linhas), $linhas);
        $maiorColuna = false;
    } else {
        $maiorColuna = array_search(max($colunas), $colunas);
        $maiorLinha = false;
    }
    // Remove os inimigos da linha/coluna escolhida
    foreach ($inimigos as $key => $inimigo) {
        if ($inimigo->x === $maiorLinha or $inimigo->y === $maiorColuna) {
            unset($inimigos[$key]);
        }
    }
    return 1 + laser($inimigos);
}
Example #2
0
 function test_tabuleiro_x()
 {
     $tabuleiro = array(new Inimigo(0, 1), new Inimigo(1, 0), new Inimigo(1, 1), new Inimigo(1, 2), new Inimigo(2, 2), new Inimigo(3, 0), new Inimigo(1, 0), new Inimigo(0, 1), new Inimigo(1, 1), new Inimigo(2, 1), new Inimigo(2, 2), new Inimigo(0, 3));
     $this->assertSame(3, laser($tabuleiro));
 }