http://qiita.com/Nabetani/items/55641767510c2f9f235f
http://nabetani.sakura.ne.jp/hena/ord10haniwa/
第10回はハニカム歩きです。
ていうかこれ、第12回の道なりの亀と同じだよな。
ただし進行方向が6方向と、二次元配列で解くには少々面倒になっています。
ということで手っ取り早く進行先を全部持たせることにします。
今回はえらい簡単でした。
20分くらいで終わった。
もしかしたら第12回もこの方法でやった方が簡単だったかもしれぬ。
「オフラインリアルタイムどう書く」の一覧
PR
http://nabetani.sakura.ne.jp/hena/ord10haniwa/
第10回はハニカム歩きです。
ていうかこれ、第12回の道なりの亀と同じだよな。
ただし進行方向が6方向と、二次元配列で解くには少々面倒になっています。
ということで手っ取り早く進行先を全部持たせることにします。
01 | <!--?php |
02 | class HONEYCOMB{ |
03 | // はにかむ構造 |
04 | private $next = [ |
05 | 'A' =--> 'BCDEFG' , 'B' => 'HICAGS' , 'C' => 'IJKDAB' , 'D' => 'CKLMEA' , 'E' => 'ADMNOF' , 'F' => 'GAEOPQ' , |
06 | 'G' => 'SBAFQR' , 'H' => 'TUIBSk' , 'I' => 'UVJCBH' , 'J' => 'VWXKCI' , 'K' => 'JXYLDC' , 'L' => 'KYZaMD' , |
07 | 'M' => 'DLabNE' , 'N' => 'EMbcdO' , 'O' => 'FENdeP' , 'P' => 'QFOefg' , 'Q' => 'RGFPgh' , 'R' => 'jSGQhi' , |
08 | 'S' => 'kHBGRj' , 'T' => '!!UHk!' , 'U' => '!!VIHT' , 'V' => '!!WJIU' , 'W' => '!!!XJV' , 'X' => 'W!!YKJ' , |
09 | 'Y' => 'X!!ZLK' , 'Z' => 'Y!!!aL' , 'a' => 'LZ!!bM' , 'b' => 'Ma!!cN' , 'c' => 'Nb!!!d' , 'd' => 'ONc!!e' , |
10 | 'e' => 'POd!!f' , 'f' => 'gPe!!!' , 'g' => 'hQPf!!' , 'h' => 'iRQg!!' , 'i' => '!jRh!!' , 'j' => '!kSRi!' , 'k' => '!THSj!' |
11 | ]; |
12 | |
13 | /** |
14 | * はにかむ構造を解いて返す |
15 | * @param String 「135004」みたいな文字列 |
16 | * @param String 「ACDABHS」みたいな文字列 |
17 | */ |
18 | public function get( $route ){ |
19 | $ret = $now = 'A' ; |
20 | foreach ( str_split ( $route ) as $val ){ |
21 | $next = $this ->next[ $now ][ $val ]; |
22 | $ret .= $next ; |
23 | // !の場合は先に進まない |
24 | if ( $next !== '!' ){ |
25 | $now = $next ; |
26 | } |
27 | } |
28 | return $ret ; |
29 | } |
30 | } |
31 | |
32 | // テスト |
33 | $test = [ |
34 | [ '135004' , 'ACDABHS' ], |
35 | /* 省略 */ |
36 | ]; |
37 |
38 | $honeycomb = new HONEYCOMB(); |
39 | foreach ( $test as $key => $data ){ |
40 | $answer = $honeycomb ->get( $data [0]); |
41 | if ( $answer !== $data [1]){ |
42 | print( 'えらー' ); |
43 | } |
44 | } |
今回はえらい簡単でした。
20分くらいで終わった。
もしかしたら第12回もこの方法でやった方が簡単だったかもしれぬ。
「オフラインリアルタイムどう書く」の一覧