Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function rotModFibN( $kod ){
- $alfabetKodowanie = array(
- 'A' => 0,
- 'B' => 1,
- 'C' => 2,
- 'D' => 3,
- 'E' => 4,
- 'F' => 5,
- 'G' => 6,
- 'H' => 7,
- 'I' => 8,
- 'J' => 9,
- 'K' => 10,
- 'L' => 11,
- 'M' => 12,
- 'N' => 13,
- 'O' => 14,
- 'P' => 15,
- 'Q' => 16,
- 'R' => 17,
- 'S' => 18,
- 'T' => 19,
- 'U' => 20,
- 'V' => 21,
- 'W' => 22,
- 'X' => 23,
- 'Y' => 24,
- 'Z' => 25,
- 0 => 26,
- 1 => 27,
- 2 => 28,
- 3 => 29,
- 4 => 30,
- 5 => 31,
- 6 => 32,
- 7 => 33,
- 8 => 34,
- 9 => 35
- );
- $alfabetDekodowanie = array(
- 0 => 'A',
- 1 => 'B',
- 2 => 'C',
- 3 => 'D',
- 4 => 'E',
- 5 => 'F',
- 6 => 'G',
- 7 => 'H',
- 8 => 'I',
- 9 => 'J',
- 10 => 'K',
- 11 => 'L',
- 12 => 'M',
- 13 => 'N',
- 14 => 'O',
- 15 => 'P',
- 16 => 'Q',
- 17 => 'R',
- 18 => 'S',
- 19 => 'T',
- 20 => 'U',
- 21 => 'V',
- 22 => 'W',
- 23 => 'X',
- 24 => 'Y',
- 25 => 'Z',
- 26 => 0,
- 27 => 1,
- 28 => 2,
- 29 => 3,
- 30 => 4,
- 31 => 5,
- 32 => 6,
- 33 => 7,
- 34 => 8,
- 35 => 9
- );
- $kodDlugosc = strlen( $kod );
- $fib[ 0 ] = $kodDlugosc;
- $fib[ 1 ] = $kodDlugosc;
- $kod{ 0 } = $alfabetDekodowanie[ ( ( ( $alfabetKodowanie[ $kod{ 0 } ] - $fib[ 1 ] ) ) + ( 36 * ( round( $fib[ 1 ] / 36 ) + 1 ) ) ) % 36 ];
- $k = 2;
- while( $k <= $kodDlugosc ) {
- $fib[ $k ] = $fib[ $k - 1 ] + $fib[ $k - 2 ];
- $kod{ $k - 1 } = $alfabetDekodowanie[ ( ( ( $alfabetKodowanie[ $kod{ $k - 1 } ] - $fib[ $k ] ) ) + ( 36 * ( round( $fib[ $k ] / 36 ) + 1 ) ) ) % 36 ];
- ++$k;
- }
- return $kod;
- }
- function spiralaGeneruj( $kolumny, $wiersze, $roznicaMod, $przesuniecie = 0, $wierszPoczatkowy = 0, $tablica = array() ) {
- $wiersz = $wierszPoczatkowy;
- $kolumna = $wierszPoczatkowy;
- while( $kolumna < $kolumny && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
- $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
- ++$przesuniecie;
- ++$kolumna;
- }
- --$kolumna;
- ++$wiersz;
- while( $wiersz < $wiersze && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
- $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
- ++$wiersz;
- ++$przesuniecie;
- }
- --$kolumna;
- --$wiersz;
- while( $kolumna >= $wierszPoczatkowy && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
- $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
- ++$przesuniecie;
- --$kolumna;
- }
- --$wiersz;
- ++$kolumna;
- while( $wiersz > $wierszPoczatkowy && !isset( $tablica[ $wiersz ][ $kolumna ] ) ) {
- $tablica[ $wiersz ][ $kolumna ] = $przesuniecie % $roznicaMod;
- ++$przesuniecie;
- --$wiersz;
- }
- if( $przesuniecie < $kolumny * $wiersze ) {
- $tablica = spiralaGeneruj( $kolumny, $wiersze, $roznicaMod, $przesuniecie, $wierszPoczatkowy+1, $tablica );
- }
- return $tablica;
- }
- function spiralaRysuj( $kolumny, $wiersze, $roznicaMod, $minimum ){
- $spirala = spiralaGeneruj( $kolumny, $wiersze, $roznicaMod );
- $wiersz = 0;
- while( $wiersz < $wiersze ) {
- $kolumna = 0;
- while( $kolumna < $kolumny ) {
- echo $minimum + $spirala[ $wiersz ][ $kolumna ];
- ++$kolumna;
- }
- echo "\n";
- ++$wiersz;
- }
- }
- function wazRysuj( $kolumny, $wiersze, $roznicaMod, $minimum ){
- $wiersz = 0;
- while( $wiersz < $wiersze ) {
- $kolumna = 0;
- while( $kolumna < $kolumny ) {
- if( $kolumna % 2 ) {
- echo $minimum + ( $kolumna * $wiersze + $wiersz ) % $roznicaMod;
- }
- else {
- echo $minimum + ( ( $kolumna * $wiersze ) + ( $wiersze - 1 - $wiersz ) ) % $roznicaMod;
- }
- ++$kolumna;
- }
- echo "\n";
- ++$wiersz;
- }
- }
- function wierszeRysuj( $kolumny, $wiersze, $roznicaMod, $minimum ){
- $przesuniecie = $wiersze * $kolumny - 1;
- $wiersz = 0;
- while( $wiersz < $wiersze ) {
- $kolumna = 0;
- while( $kolumna < $kolumny ) {
- echo $minimum + $przesuniecie % $roznicaMod;
- ++$kolumna;
- --$przesuniecie;
- }
- echo "\n";
- ++$wiersz;
- }
- }
- $kod = rotModFibN( $argv[ 1 ] );
- preg_match ( '/K[0-9]{1,2}/', $kod, $kolumny );
- $kolumny = substr( $kolumny[ 0 ], 1 );
- preg_match ( '/W[0-9]{1,2}/', $kod, $wiersze );
- $wiersze = substr( $wiersze[ 0 ], 1 );
- preg_match ( '/A[0-9]{1}/', $kod, $minimum );
- $minimum = substr( $minimum[ 0 ], 1 );
- preg_match ( '/Z[0-9]{1}/', $kod, $maksimum );
- $maksimum = substr( $maksimum[ 0 ], 1 );
- $roznicaMod = $maksimum - $minimum + 1;
- spiralaRysuj( $kolumny, $wiersze, $roznicaMod, $minimum );
- echo "\n";
- wazRysuj( $kolumny, $wiersze, $roznicaMod, $minimum );
- echo "\n";
- wierszeRysuj( $kolumny, $wiersze, $roznicaMod, $minimum );
- echo "\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement