Advertisement
NFL

Верхофф (почти Медофф =D)

NFL
Jun 29th, 2011
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.09 KB | None | 0 0
  1. class Verhoff {
  2.  
  3.     private $_d = array(
  4.         //k=  0  1  2  3  4  5  6  7  8  9
  5.         array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), //j=0
  6.         array(1, 2, 3, 4, 0, 6, 7, 8, 9, 5), //j=1
  7.         array(2, 3, 4, 0, 1, 7, 8, 9, 5, 6), //j=2
  8.         array(3, 4, 0, 1, 2, 8, 9, 5, 6, 7), //j=3
  9.         array(4, 0, 1, 2, 3, 9, 5, 6, 7, 8), //j=4
  10.         array(5, 9, 8, 7, 6, 0, 4, 3, 2, 1), //j=5
  11.         array(6, 5, 9, 8, 7, 1, 0, 4, 3, 2), //j=6
  12.         array(7, 6, 5, 9, 8, 2, 1, 0, 4, 3), //j=7
  13.         array(8, 7, 6, 5, 9, 3, 2, 1, 0, 4), //j=8
  14.         array(9, 8, 7, 6, 5, 4, 3, 2, 1, 0)  //j=9
  15.     ); //d(j, k)
  16.     private $_p = array(
  17.         //y=  0  1  2  3  4  5  6  7  8  9
  18.         array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), //x=0
  19.         array(1, 5, 7, 6, 2, 8, 3, 0, 9, 4), //x=1
  20.         array(5, 8, 0, 3, 7, 9, 6, 1, 4, 2), //x=2
  21.         array(8, 9, 1, 6, 0, 4, 3, 5, 2, 7), //x=3
  22.         array(9, 4, 5, 3, 1, 2, 6, 8, 7, 0), //x=4
  23.         array(4, 2, 8, 6, 5, 7, 3, 9, 0, 1), //x=5
  24.         array(2, 7, 9, 3, 8, 0, 6, 4, 1, 5), //x=6
  25.         array(7, 0, 4, 6, 9, 1, 3, 2, 5, 8)  //x=7
  26.     ); //p(x, y)
  27.     //
  28.     //j =                 0  1  2  3  4  5  6  7  8  9
  29.     private $_inv = array(0, 4, 3, 2, 1, 5, 6, 7, 8, 9);
  30.     private $_num;
  31.  
  32.     public function __construct() {
  33.        
  34.     }
  35.  
  36.     private function _inv($i) {
  37.         return $this->_inv[$i];
  38.     }
  39.  
  40.     public function create($num) {
  41.         $c = 0;
  42.         $num = str_replace('_', ord('_'), $num);
  43.         $this->_num = $num;
  44.         $num = strrev($num);
  45.         for ($i = 0; $i < strlen($num); $i++) {
  46.             $c = $this->_d[$c][$this->_p[(($i + 1) % 8)][$num[$i]]];
  47.         }
  48.         return $this->_inv($c);
  49.     }
  50.  
  51.     public function makesum() {
  52.         $sumdig = $this->create($this->_num);
  53.         return $this->_num . $sumdig;
  54.     }
  55.  
  56.     public function test($num) {
  57.         $control = substr($num, -1);
  58.         $testnum = substr($num, 0, strlen($num) - 1);
  59.         if ($this->create($testnum) == $control) {
  60.             return true;
  61.         }
  62.         else
  63.             return FALSE;
  64.     }
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement