Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/09/2003, 23:27
leonardop
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola,

Muy interesante la información contribuida por nuestro amigo nuevo. Y ya que ha publicado una implementación en Java de la solución, me he valido de ella para escribir una aplicación similar en PHP. No he estudiado mucho el algoritmo, ya que me he limitado a "traducir" el código de Java, pero parece conseguir su propósito. :)

Código:
<?php

$self = $_SERVER['PHP_SELF'];
$filas = isset ($_GET['filas']) ? $_GET['filas'] : 0;


echo <<<FIN_FORMULARIO
<form action="$self" method="get">
<p>Número de filas: <input name="filas" value="$filas" /></p>
</form>
FIN_FORMULARIO;


$cols = $filas * 2 - 1;

if ($cols < 0)
    $cols = 0;

for ($i = 0; $i < $filas; $i++)
    for ($j = 0; $j < $cols; $j++)
        $pascal[$i][$j] = 0;

$pascal[0][$filas - 1] = 1;

$cont = 0;

for ($i = 1; $i < $filas; $i++) {
    for ($j = $filas - 1 - $i; $j < $cols; $j += 2) {
        if ($cont <= $i) {
            if ($j == 0 || $j == $cols - 1)
                $pascal[$i][$j] = 1;
            else
                $pascal[$i][$j] = $pascal[$i - 1][$j - 1] +
                    $pascal[$i - 1][$j + 1];
                
        }
        $cont++;
    }
    $cont = 0;
}

echo "<p>Filas: $filas</p>\n<p>Columnas: $cols</p>\n<table>\n";

for ($i = 0; $i < $filas; $i++) {
    echo "<tr>\n";
    for ($j = 0; $j < $cols; $j++) {
        echo '<td>';

        if ($pascal[$i][$j] != 0)
            echo $pascal[$i][$j];

        echo '</td>';
    }

    echo "</tr>\n";
}

echo "</table>\n";
?>
Saludos