Primeiro Desafio wbruno de PHP
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>