忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


share

2025/04/06 16:44 |
PHP5.3.7 「第10回オフラインリアルタイムどう書くの問題」をPHPで解く
http://qiita.com/Nabetani/items/55641767510c2f9f235f
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回もこの方法でやった方が簡単だったかもしれぬ。

「オフラインリアルタイムどう書く」の一覧
PR

share

2013/07/05 22:15 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<今週の実績 2013/07/07 | HOME | ショートカットメニュー:オフラインリアルタイムどう書く>>
忍者ブログ[PR]