http://nabetani.sakura.ne.jp/hena/ord4tetroid/
qiita版リンク集がない?
作者による回答例はこちら。
http://qiita.com/Nabetani/items/cdc38bfc5665a5361942
http://qiita.com/Nabetani/items/a2d6f70241b9e80ab17d
4つの座標から、どのテトリミノかを判断します。
正直どうすればよいのかよくわからん。
一番左上に詰めたときのパターンを全て持っておき、一致すればそれを返すという単純な作りです。
foreachが3回も出てくるのが微妙だ。
かかった時間は40分くらい。
「オフラインリアルタイムどう書く」の一覧
qiita版リンク集がない?
作者による回答例はこちら。
http://qiita.com/Nabetani/items/cdc38bfc5665a5361942
http://qiita.com/Nabetani/items/a2d6f70241b9e80ab17d
4つの座標から、どのテトリミノかを判断します。
正直どうすればよいのかよくわからん。
<?php class TETRIMINO{ // 全パターン private $minoList = [ 'L0' => ['00', '01', '02', '12'], 'L1' => ['00', '01', '10', '20'], 'L2' => ['00', '10', '11', '12'], 'L3' => ['01', '11', '20', '21'], 'L4' => ['02', '10', '11', '12'], 'L5' => ['00', '01', '11', '21'], 'L6' => ['00', '01', '02', '10'], 'L7' => ['00', '10', '20', '21'], 'I0' => ['00', '01', '02', '03'], 'I1' => ['00', '10', '20', '30'], 'T0' => ['00', '10', '11', '20'], 'T1' => ['01', '10', '11', '12'], 'T2' => ['01', '10', '11', '21'], 'T3' => ['00', '01', '02', '11'], 'O0' => ['00', '01', '10', '11'], 'S0' => ['00', '01', '11', '12'], 'S1' => ['01', '02', '10', '11'], 'S2' => ['00', '10', '11', '21'], 'S3' => ['01', '10', '11', '20'], ]; /** * テトリミノ * @param String 「07,17,06,05」みたいな文字 * @return String 「L」みたいな文字 */ public function get($input){ // パース $list = explode(',', $input); if(count(array_flip($list)) !== 4){ return '-'; } // 左上に詰める $minX = $minY = 9; foreach($list as $key=>$val){ $minX = min($val[0], $minX); $minY = min($val[1], $minY); } foreach($list as $key=>$val){ $list[$key] = ($val[0]-$minX) . ($val[1]-$minY); } // 同じものがあればそれを返す sort($list); foreach($this->minoList as $key=>$val){ if($val === $list){ return $key[0]; } } // なかった return '-'; } } // テスト $test = [ ['55,55,55,55', '-'], /* 省略 */ ]; $tetrimino = new TETRIMINO(); foreach($test as $key=>$data){ $answer = $tetrimino->get($data[0]); if($answer !== $data[1]){ print('えらー'); } }回転させるのが面倒なら、回転後のデータも全部持ってればいいじゃない、という暴挙。
一番左上に詰めたときのパターンを全て持っておき、一致すればそれを返すという単純な作りです。
foreachが3回も出てくるのが微妙だ。
かかった時間は40分くらい。
「オフラインリアルタイムどう書く」の一覧
PR