忍者ブログ
[PR]
×

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



2024/11/23 16:42 |
PHP5.3.7 「第10回オフラインリアルタイムどう書くの問題」をPHPで解く
http://qiita.com/Nabetani/items/55641767510c2f9f235f
http://nabetani.sakura.ne.jp/hena/ord10haniwa/

第10回はハニカム歩きです。
ていうかこれ、第12回の道なりの亀と同じだよな。
ただし進行方向が6方向と、二次元配列で解くには少々面倒になっています。
ということで手っ取り早く進行先を全部持たせることにします。

 'BCDEFG','B' => 'HICAGS','C' => 'IJKDAB','D' => 'CKLMEA','E' => 'ADMNOF','F' => 'GAEOPQ',
			'G' => 'SBAFQR','H' => 'TUIBSk','I' => 'UVJCBH','J' => 'VWXKCI','K' => 'JXYLDC','L' => 'KYZaMD',
			'M' => 'DLabNE','N' => 'EMbcdO','O' => 'FENdeP','P' => 'QFOefg','Q' => 'RGFPgh','R' => 'jSGQhi',
			'S' => 'kHBGRj','T' => '!!UHk!','U' => '!!VIHT','V' => '!!WJIU','W' => '!!!XJV','X' => 'W!!YKJ',
			'Y' => 'X!!ZLK','Z' => 'Y!!!aL','a' => 'LZ!!bM','b' => 'Ma!!cN','c' => 'Nb!!!d','d' => 'ONc!!e',
			'e' => 'POd!!f','f' => 'gPe!!!','g' => 'hQPf!!','h' => 'iRQg!!','i' => '!jRh!!','j' => '!kSRi!','k' => '!THSj!'
		];
		
		/**
		* はにかむ構造を解いて返す
		* @param String 「135004」みたいな文字列
		* @param String 「ACDABHS」みたいな文字列
		*/
		public function get($route){
			$ret = $now = 'A';
			foreach(str_split($route) as $val){
				$next = $this->next[$now][$val];
				$ret.= $next;
				// !の場合は先に進まない
				if($next !== '!'){
					$now = $next;
				}
			}
			return $ret;
		}
	}
	
	// テスト
	$test = [
		[ '135004', 'ACDABHS' ],
		/* 省略 */
	];

	$honeycomb = new HONEYCOMB();
	foreach($test as $key=>$data){
		$answer = $honeycomb->get($data[0]);
		if($answer !== $data[1]){
			print('えらー');
		}
	}

今回はえらい簡単でした。
20分くらいで終わった。
もしかしたら第12回もこの方法でやった方が簡単だったかもしれぬ。

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


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

コメント

コメントを投稿する






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



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