Salve salve !!!

Vou fazer uma tentativa.. desafiozinho simples.. qndo eu tiver umas 3 respostas(certas ou não), eu divulgo a minha solução.(podem continuar enviando as suas contribuições, mesmo que eu já tenha colocado a minha).

Resolva com 2 loops. Se conseguir, resolva com um único loop.

O desafio, é gerar o resultado abaixo(na imagem), usando php(seu php vai gerar algum html).

Podem me enviar o código pelo www.pastebin.com, aqui pelos comentários do blog mesmo.

é isso!

O melhor algorítmo(mais elegante) vence.

Boa Sorte!

.

.

.

.

.

.

.

.

.

.

.

.

.

Minha solução com 2 loops encaixados:

<style type="text/css">
#grid td {
  width: 25px;
  height: 25px;
  text-align: center;
}
#grid td.diagonal {
  background: #000;
  color: #f00;
}
</style>
<table id="grid">
<?php
  for( $i=1; $i<10; $i++ )
  {
    echo '<tr>';
    for( $j=1; $j<10; $j++ )
    {
      $class = $i==$j || $i+$j==10 ? ' class="diagonal"' : '';
      $text = $i==5 || $j==5 ? '+' : '-';

      echo '<td'.$class.'>'.$text.'</td>';
    }
    echo '</tr>';
  }

?>
</table>

Agora, resolvam com um único loop!

Com 2 encaixados é fácil ne?!

Mesma imagem, mesmas regras. Consegue ?

Minha solução com apenas um único loop

<style type="text/css">
#grid td {
  width: 25px;
  height: 25px;
  text-align: center;
}
#grid td.diagonal {
  background: #000;
  color: #f00;
}
</style>
<table id="grid">
<tr>
<?php
  $j = 1;
  $k = 1;
  for( $i=0; $i<81; $i++ )
  {
    $ctrl = $i!=0 && $i%9==0;
    if( $ctrl ) echo '</tr>'.PHP_EOL.'<tr>'.PHP_EOL;

    $class = $j==$k || $j+$k==10 ? ' class="diagonal"' : '';
    $text = $j==5 || $k==5 ? '+' : '-';

    echo "\t".'<td'.$class.'>'.$text.'</td>'.PHP_EOL;

    $j = $j>=9 ? 1 : $j+1;
    $k = $j==1 ? $k+1 : $k;
  }
?>
</tr>
</table>