Advertisement
Guest User

Untitled

a guest
Nov 4th, 2010
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.08 KB | None | 0 0
  1. <?php
  2.  
  3. $cols = $rows = $min = $max = 0;
  4.  
  5. //w komentarzu dobre nazwy zmiennych. nazwy pozamieniane na koniec zeby zmniejszyc ilosc zmiennych
  6. $code = $argv[1];
  7. $rect_size = strlen($code); //$codelen
  8. $max_min = $rect_size; //$thismodfib
  9. $c_counter = 0; //$modfib1
  10. $to_break = 0; //$parameter
  11.  
  12. for($i = 0; $i < $rect_size; $i++)
  13. {
  14.     $max_min = ($max_min + $c_counter)%36;
  15.     $c_counter = ($max_min - $c_counter)%36;
  16.  
  17.     $rect1 = ord($code{$i});
  18.     //przejscie z ascii do indeksow alfabetu
  19.     if($rect1 >= 97) $rect1 = ($rect1 - 96 - $max_min)%36;
  20.     elseif($rect1 >= 65) $rect1 = ($rect1 - 64 - $max_min)%36;
  21.     else $rect1 = ($rect1 - 21 - $max_min)%36;
  22.    
  23.     if($rect1 < 0) $rect1 = 36 + $rect1;
  24.  
  25.     if($rect1 == 1)$to_break = 2;
  26.     elseif($rect1 == 11)$to_break = 0;
  27.     elseif($rect1 == 23)$to_break = 1;
  28.     elseif($rect1 == 26)$to_break = 3;
  29.     elseif($rect1 > 26 && $to_break >= 0)
  30.         {
  31.             if($to_break == 0)$cols = $cols*10 + $rect1-27;
  32.             if($to_break == 1)$rows = $rows*10 + $rect1-27;
  33.             if($to_break == 2)$min = $rect1-27;
  34.             if($to_break == 3)$max = $rect1-27;
  35.         }
  36.     else $to_break = -1;
  37. }
  38.  
  39.  
  40. $rect_size = $cols*$rows;
  41. $max_min = $max - $min + 1;
  42. $c_counter = 0;
  43. $to_break = $cols;
  44.  
  45. $rect1 = ' '; $rect2 = ''; $rect3 = ' ';
  46.  
  47. $pos = 0; $pos_c = 1; $rect3_pos = $cols * ($rows-1); $rect3_pos_c = -1*$cols;
  48. for($i = 0; $i < $rect_size; $i++)
  49. {
  50.     $rect1{$pos} = $rect3{$rect3_pos} = $min + $i%($max_min);
  51.    
  52.     if(($i+1)%$rows == 0)
  53.     {$rect3_pos_c *= -1; $rect3_pos++;}
  54.     else
  55.     $rect3_pos += $rect3_pos_c;
  56.    
  57.     $to_break--;
  58.     if($to_break === 0)
  59.     {
  60.         if($pos_c === 1){$pos_c = $cols; $c_counter++; $to_break = $rows - $c_counter;}
  61.         elseif($pos_c > 1){$pos_c=-1; $to_break = $cols - $c_counter;}
  62.         elseif($pos_c === -1){$pos_c=-1*$cols; $c_counter++; $to_break = $rows - $c_counter;}
  63.         else{$pos_c = 1; $to_break = $cols - $c_counter;}
  64.     }
  65.     $pos += $pos_c;
  66. }
  67.  
  68. echo chunk_split($rect1, $cols, "\n"),"\n";
  69. echo chunk_split($rect3, $cols, "\n"),"\n";
  70. for($i=$min;$i<=$max;$i++) $rect2 .= $i;
  71. echo chunk_split(strrev(substr(str_repeat($rect2,ceil($rect_size/$max_min)),0,$rect_size)),$cols,"\n"),"\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement