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