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