Код Грея

  1. class Gray
  2. {
  3.  
  4.     /**
  5.      * @param int $n
  6.      * @return int
  7.      */
  8.     public static function encode($n)
  9.     {
  10.         return $n ^ ($n >> 1);
  11.     }
  12.  
  13.     /**
  14.      * @param int $g
  15.      * @return int
  16.      */
  17.     public static function decode($g)
  18.     {
  19.         $n = 0;
  20.         for (; $g; $g >>= 1) {
  21.             $n ^= $g;
  22.         }
  23.         return $n;
  24.     }
  25.  
  26. }
  27.  
  28. //Example
  29. $encode = Gray::encode(2016);
  30. echo 'Encode: ' . $encode . '<br>';
  31. echo 'Decode: ' . Gray::decode($encode);
Подробнее здесь:
https://en.m.wikipedia.org/wiki/Gray_code
http://m.habrahabr.ru/post/200806/
http://m.habrahabr.ru/post/203362/
Когда-нибудь, кому-нибудь, где-нибудь пригодится обязательно. Пусть будет :)

Реклама

Мы в соцсетях

tw tg yt gt