Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.09 KB | None | 0 0
  1. <?php
  2.  
  3.     function rotModFibN( $kod ){
  4.  
  5.         $alfabetKodowanie = array(
  6.             'A' => 0,
  7.             'B' => 1,
  8.             'C' => 2,
  9.             'D' => 3,
  10.             'E' => 4,
  11.             'F' => 5,
  12.             'G' => 6,
  13.             'H' => 7,
  14.             'I' => 8,
  15.             'J' => 9,
  16.             'K' => 10,
  17.             'L' => 11,
  18.             'M' => 12,
  19.             'N' => 13,
  20.             'O' => 14,
  21.             'P' => 15,
  22.             'Q' => 16,
  23.             'R' => 17,
  24.             'S' => 18,
  25.             'T' => 19,
  26.             'U' => 20,
  27.             'V' => 21,
  28.             'W' => 22,
  29.             'X' => 23,
  30.             'Y' => 24,
  31.             'Z' => 25,
  32.             0 => 26,
  33.             1 => 27,
  34.             2 => 28,
  35.             3 => 29,
  36.             4 => 30,
  37.             5 => 31,
  38.             6 => 32,
  39.             7 => 33,
  40.             8 => 34,
  41.             9 => 35
  42.         );
  43.  
  44.         $alfabetDekodowanie = array(
  45.             0 => 'A',
  46.             1 => 'B',
  47.             2 => 'C',
  48.             3 => 'D',
  49.             4 => 'E',
  50.             5 => 'F',
  51.             6 => 'G',
  52.             7 => 'H',
  53.             8 => 'I',
  54.             9 => 'J',
  55.             10 => 'K',
  56.             11 => 'L',
  57.             12 => 'M',
  58.             13 => 'N',
  59.             14 => 'O',
  60.             15 => 'P',
  61.             16 => 'Q',
  62.             17 => 'R',
  63.             18 => 'S',
  64.             19 => 'T',
  65.             20 => 'U',
  66.             21 => 'V',
  67.             22 => 'W',
  68.             23 => 'X',
  69.             24 => 'Y',
  70.             25 => 'Z',
  71.             26 => 0,
  72.             27 => 1,
  73.             28 => 2,
  74.             29 => 3,
  75.             30 => 4,
  76.             31 => 5,
  77.             32 => 6,
  78.             33 => 7,
  79.             34 => 8,
  80.             35 => 9
  81.         );
  82.  
  83.         $kodDlugosc = strlen( $kod );
  84.  
  85.         $fib[ 0 ] = $kodDlugosc;
  86.         $fib[ 1 ] = $kodDlugosc;
  87.  
  88.         $kod{ 0 } = $alfabetDekodowanie[ ( ( ( $alfabetKodowanie[ $kod{ 0 } ] - $fib[ 1 ] ) ) + ( 36 * ( round( $fib[ 1 ] / 36 ) + 1 ) ) ) % 36 ];
  89.  
  90.         $k = 2;
  91.         while( $k <= $kodDlugosc ) {
  92.             $fib[ $k ] = $fib[ $k - 1 ] + $fib[ $k - 2 ];
  93.             $kod{ $k - 1 } = $alfabetDekodowanie[ ( ( ( $alfabetKodowanie[ $kod{ $k - 1 } ] - $fib[ $k ] ) ) + ( 36 * ( round( $fib[ $k ] / 36 ) + 1 ) ) ) % 36 ];
  94.             ++$k;
  95.         }
  96.         return $kod;
  97.     }
  98.  
  99.     function spiralaGeneruj( $kolumny, $wiersze, $roznicaMod, $przesuniecie = 0, $wierszPoczatkowy = 0, $tablica = array() ) {
  100.  
  101.         $wiersz = $wierszPoczatkowy;
  102.         $kolumna = $wierszPoczatkowy;
  103.  
  104.         while( $kolumna < $kolumny && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
  105.  
  106.             $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
  107.  
  108.             ++$przesuniecie;
  109.             ++$kolumna;
  110.         }
  111.         --$kolumna;
  112.         ++$wiersz;
  113.  
  114.         while( $wiersz < $wiersze && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
  115.  
  116.             $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
  117.            
  118.             ++$wiersz;
  119.             ++$przesuniecie;
  120.         }
  121.         --$kolumna;
  122.         --$wiersz;
  123.  
  124.         while( $kolumna >= $wierszPoczatkowy && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
  125.  
  126.             $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
  127.  
  128.             ++$przesuniecie;
  129.             --$kolumna;
  130.         }
  131.         --$wiersz;
  132.         ++$kolumna;
  133.  
  134.         while( $wiersz > $wierszPoczatkowy && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
  135.  
  136.             $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
  137.  
  138.             ++$przesuniecie;
  139.             --$wiersz;
  140.         }
  141.  
  142.         if( $przesuniecie < $kolumny * $wiersze ) {
  143.             $tablica = spiralaGeneruj( $kolumny, $wiersze, $roznicaMod, $przesuniecie, $wierszPoczatkowy+1, $tablica );
  144.         }
  145.        
  146.         return $tablica;
  147.     }
  148.  
  149.     function spiralaRysuj( $kolumny, $wiersze, $roznicaMod, $minimum ){
  150.  
  151.         $spirala = spiralaGeneruj( $kolumny, $wiersze, $roznicaMod );
  152.  
  153.         $wiersz = 0;
  154.         while( $wiersz < $wiersze ) {
  155.             $kolumna = 0;
  156.             while( $kolumna < $kolumny ) {
  157.                 echo $minimum + $spirala[ $wiersz ][ $kolumna ];
  158.                 ++$kolumna;
  159.             }
  160.             echo "\n";
  161.             ++$wiersz;
  162.         }
  163.     }
  164.  
  165.     function wazRysuj( $kolumny, $wiersze, $roznicaMod, $minimum ){
  166.  
  167.         $wiersz = 0;
  168.  
  169.         while( $wiersz < $wiersze ) {
  170.  
  171.             $kolumna = 0;
  172.  
  173.             while( $kolumna < $kolumny ) {
  174.  
  175.                 if( $kolumna % 2 ) {
  176.                     echo $minimum + ( $kolumna * $wiersze + $wiersz ) % $roznicaMod;
  177.                 }
  178.                 else {
  179.                     echo $minimum + ( ( $kolumna * $wiersze ) + ( $wiersze - 1 - $wiersz ) ) % $roznicaMod;
  180.                 }
  181.  
  182.                 ++$kolumna;
  183.             }
  184.            
  185.             echo "\n";
  186.             ++$wiersz;
  187.         }
  188.     }
  189.  
  190.     function wierszeRysuj( $kolumny, $wiersze, $roznicaMod, $minimum ){
  191.  
  192.         $przesuniecie = $wiersze * $kolumny - 1;
  193.         $wiersz = 0;
  194.  
  195.         while( $wiersz < $wiersze ) {
  196.  
  197.             $kolumna = 0;
  198.  
  199.             while( $kolumna < $kolumny ) {
  200.  
  201.                 echo $minimum + $przesuniecie % $roznicaMod;
  202.  
  203.                 ++$kolumna;
  204.                 --$przesuniecie;
  205.             }
  206.  
  207.             echo "\n";
  208.             ++$wiersz;
  209.         }
  210.     }
  211.  
  212.  
  213.     $kod = rotModFibN( $argv[ 1 ] );
  214.        
  215.     preg_match ( '/K[0-9]{1,2}/', $kod, $kolumny );
  216.     $kolumny = substr( $kolumny[ 0 ], 1 );
  217.  
  218.     preg_match ( '/W[0-9]{1,2}/', $kod, $wiersze );
  219.     $wiersze = substr( $wiersze[ 0 ], 1 );
  220.  
  221.     preg_match ( '/A[0-9]{1}/', $kod, $minimum );
  222.     $minimum  = substr( $minimum[ 0 ], 1 );
  223.  
  224.     preg_match ( '/Z[0-9]{1}/', $kod, $maksimum );
  225.     $maksimum = substr( $maksimum[ 0 ], 1 );
  226.  
  227.     $roznicaMod = $maksimum - $minimum + 1;
  228.    
  229.  
  230.     spiralaRysuj( $kolumny, $wiersze, $roznicaMod, $minimum );
  231.     echo "\n";
  232.  
  233.     wazRysuj( $kolumny, $wiersze, $roznicaMod, $minimum );
  234.     echo "\n";
  235.  
  236.     wierszeRysuj( $kolumny, $wiersze, $roznicaMod, $minimum );
  237.     echo "\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement