Php ile Sihirli Kare Yapma (tek sayılar için)
Mar 26,2008 00:00 by kuzeyy_22

Arkadaşlar sizlere bulmacalarda sıkça bu yazıda da girilen tk sayıya göre sihirli kare oluşturmayı gösterecem.

Mesela 1'den 9'a kadar olan bir sihirli kare

 8 1 6
 3 5 7
 4 9 2 

şeklinde olur. Bunu dahada genişletebiliriz. Bu kareyi oluşturmayı sağlayan php script aşağıda verilmiştir.

 

<form action="" name="main" method="post">
<table align="center">
<tr><td align="center">Girilecek olan sayı</td></tr>
<tr><td><input type="text" name="sayi"></td></tr>
<tr><td align="center"><input type="submit" name="onay" value="Kare Oluştur"></td></tr>
</table></form>

<?php

if(isset($_POST['onay'])){
 $dizi1=range(1,100);
 $dizi2=range(1,100);
 $dizi=array($dizi1,$dizi2);
 $sayi=(int)$_POST['sayi'];
 $sayikare=$sayi*$sayi;
 for($i=1;$i<=$sayi;$i++){
  for($j=1;$j<=$sayi;$j++){
   $dizi[$i][$j]=0;
  }
 }
 $i=1;
 $j=floor(($sayi+1)/2);
 
 for ($k=1;$k<=$sayikare;$k++){
  if($dizi[$i][$j]>0){
   $i=$i+2;
   $j=$j-1;
  }
  $dizi[$i][$j]=$k;
  $i=$i-1;
  $j=$j+1;
  if (($i==0) and ($j>$sayi)){
   $i=$i+2;
   $j=$j-1;
  }
  if ($i==0){
   $i=$sayi;
   
  }
  if ($j>$sayi){
   $j=1;
  }  
 }
 echo "<table border=\"2\" align=\"center\"><tr>";
 for($i=1;$i<=$sayi;$i++){
  echo "</tr><tr>";
  for($j=1;$j<=$sayi;$j++){
   $a=$dizi[$i][$j];
   print "<td align=\"center\">$a</td>";
  }
}
}
?></tr></table>