Advertisement
Guest User

Untitled

a guest
May 25th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.76 KB | None | 0 0
  1. <?php
  2.  
  3. class BacktrackAlgorithm
  4. {
  5.  
  6.     public function backtrack($target, $last = null)
  7.     {
  8.         $this->printLine($target);
  9.         $blank = array_search("blank", $target);
  10.         if (!$this->checkIsValid($target)) {
  11.             if ($last === "white") {
  12.                 for ($i = count($target); $i >= 1; $i--) {
  13.                     if (!in_array($target[$i],array("blank","white"))) {
  14.                         $target[$blank] = "black";
  15.                         $target[$i] = "blank";
  16.                         return $this->backtrack($target, "black");
  17.                     }
  18.                 }
  19.             } else {
  20.                 for ($i = 1; $i <= count($target); $i++) {
  21.                     if (!in_array($target[$i],array("blank","black"))) {
  22.                         $target[$blank] = "white";
  23.                         $target[$i] = "blank";
  24.                         return $this->backtrack($target, "white");
  25.                     }
  26.                 }
  27.             }
  28.         }
  29.     }
  30.  
  31.     public function checkIsValid($target)
  32.     {
  33.         return (bool) !in_array("white", array_slice($target,0,3)) && !in_array("blank", array_slice($target, 0, 3));
  34.     }
  35.  
  36.     public function printLine($target)
  37.     {
  38.         echo "<tr>";
  39.         foreach ($target AS $value) :
  40.             echo "<td class=\"{$value}\">{$value}</td>";
  41.         endforeach;
  42.         echo "</tr>";
  43.     }
  44.  
  45. }
  46. ?>
  47. <style>
  48.     td { width: 50px; height: 50px; border: 1px solid black; text-align: center; }
  49.     .white { background: white; }
  50.     .black { background: black; }
  51.     .blank { background: brown; }
  52. </style>
  53. <table>
  54. <?php
  55. $backtrack = new BacktrackAlgorithm();
  56. $backtrack->backtrack(array(1 => 'white','white','white','blank','black','black','black'));
  57. ?>
  58. </table>
  59. <?php
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement