忍者ブログ
[PR]
×

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



2025/07/24 01:31 |
買ったものリスト 2013/08/25

極光星群 年刊日本SF傑作選 大森 望
☆☆☆☆

2012年の日本SF傑作選とのことですが、正直ちょっと意味のわからない話も多い。
鎖鎌娘が埋められた奴とか何をしたいのか全く理解できませんでした。。
あと脚本みたいなやつはこういうのに入れるべきではないと思うんだがどうなんだろう。
単に読みにくいだけだよね。

一番気に入ったのは銀河風帆走ですかね。
おそらく一番の王道ですが、王道であるのは王道が一番だからですしね。


魔女の心臓1 matoba
魔女の心臓2
☆☆☆☆

ろ…露骨な肋骨。
さえずり少女、しんしん鎌倉でとりあえず作者買いを決めたmatoba氏の現在連載中作品。
永遠の時を生きる少女と喋る上に壊れないランタンの奇妙な二人道中記。
出生から世界観まで謎の多い話ですが、2巻で一気に話が動いたようなそうでもないような。

ところでガンガンONLINEって会費取ってるわけでもないしどうやって採算取ってるんだろうか。


暗殺教室4 松井 優征
暗殺教室5
☆☆☆☆

相変わらず胸糞悪くなる狂人を書かせたら天下一品だな、この作者。
これまでわりといい人やまともな人、計算ずくで悪に徹している人などしか出てこなかったのですが、いよいよ作者が本領発揮してきました。
しかしなんだ、幾ら鍛えたところで次元が違うから色々と無理だろこれ、一体どうすんだ。

兄よりすぐれた弟など存在しねぇ!!

PR


2013/08/25 20:31 | Comments(0) | 買ったもの
今週の実績 2013/08/25
2013/08/23の実績

地球防衛軍4

アント・ハンター 15
蟻系巨大生物を合計20000体倒す

2013/08/18の実績

地球防衛軍4

トンネル・ハンター 15
地下トンネルの出口を200破壊する

シールド・ハンター 15
シールドベアラーを120体倒す

2013/08/13の実績

地球防衛軍4

キング・ハンター 15
大蜘蛛を40体倒す


2013/08/25 19:06 | Comments(0) | 実績
PHP5.5.0 「第13回オフラインリアルタイムどう書くの参考問題」をPHPで解く
http://qiita.com/Nabetani/items/89fb0e2e712d4b396535
http://nabetani.sakura.ne.jp/hena/ord13updowndouble/

「+1」「-1」「*2」だけで目的の数値を求めるという問題。
単純にやったら最短にならない場合があります。
単調減少:59→58→29→28→14→7→6→3→2→1→0(10回)
最短:59→60→30→15→16→8→4→2→1→0(9回)
どうすればいいんだろう?

<?php
	class MULTIPLY{
		
		/**
		* 0になる最短の回数
		* @param  int 「59」みたいな数値
		* @return int 「9」みたいな数値
		*/
		public function get($input){
			
			// 偶数であれば2で割る、+1して4で割れれば+1する、それ以外は-1
			for($i=0;$input>4;$i++){
				$input = ($input%2) ? ( (($input+1)%4) ? $input-1 : $input+1 ) : $input/2 ;
			}
			// 3か4になったら2、1、0となるだけなので+3
			return $i+3;
		}
		
	}
	
	// テスト
	$test = [
		[59, 9],
		/* 省略 */
	];

	$multiply = new MULTIPLY();
	foreach($test as $key=>$data){
		$answer = $multiply->get($data[0]);
		if($answer !== $data[1]){
			print('えらー');
		}
	}
なんかできた。
試行錯誤で1時間くらい。

なお、このアルゴリズムが普遍のものなのか、今回たまたま動いてるだけなのかは知りません。
どこかの数学パズルか何かでこの解き方を見たような記憶があるのですが、探しても見つかりませんでした。
というかどんなキーワードでググれバインダー


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


2013/08/23 23:59 | Comments(0) | PHP
PHP5.4.7 オブジェクトの数値キーにアクセスしたい
http://bloggdgd.blog28.fc2.com/blog-entry-264.html
http://fushi.x0.com/blog/archives/828

<?php
	$arr = array('0'=>'zero', 'A'=>'B');
	$obj = (object)$arr;
	var_dump($obj);
	object(stdClass)#1 (2) {
	  [0]=>
	  string(4) "zero"
	  ["A"]=>
	  string(1) "B"
	}
objectにキャストした結果、"zero"のキーが何故か数値になっています。
プロパティ「"A"」には$obj->Aでアクセスできますが、プロパティ「0」にはどうやってもアクセスできねーよ、というお話。

	$arrayObject = new ArrayObject($obj, ArrayObject::ARRAY_AS_PROPS);
	print($arrayObject[0]); // zero
できました。
まあキャストしてるから(array)と一緒だろ、と言われればそのとおりですが。

実はここからがわりと愉快で深刻な話になります。

<?php
	$arr = array('0'=>'zero');
	$obj = (object)$arr; // [0]になる
	$obj->{0} = 'hoge'; // 実際は["0"]に入る
	
	// ArrayObjectは全て"zero"
	$arrayObject = new ArrayObject($obj, ArrayObject::ARRAY_AS_PROPS);
	var_dump($arrayObject[0], $arrayObject['0'], $arrayObject->{0}, $arrayObject->{'0'});
	
	// 配列はどちらも"zero"
	$arr = (array)$iter;
	var_dump($arr[0], $arr['0']);
	
	// stdClassは何故か"hoge"
	$obj = (object)$arr;
	var_dump($obj->{0}, $obj->{'0'});
うむ、意味が分からない。


2013/08/19 23:27 | Comments(0) | PHP
買ったものリスト 2013/08/18

ビブリア古書堂の事件手帳1 ~栞子さんと奇妙な客人たち~ 三上 延
ビブリア古書堂の事件手帳2 ~栞子さんと謎めく日常~
ビブリア古書堂の事件手帳3 ~栞子さんと消えない絆~
ビブリア古書堂の事件手帳4 ~栞子さんと二つの顔~
☆☆☆☆☆

本をネタにする作家はレベル高いですな。
三上延、野村美月、施川ユウキ。
少々謎解きに強引なところが感じられるところもないでもないですが、あと人物関係込み入りすぎですが、作品そのものは超面白え。
ただ登場人物に犯罪者多すぎじゃね。

なお本書購入の要因は、漫画でもドラマでもなくバーナード嬢曰く。です。
本書に出てくる書籍は一冊も読んだことがありませんでした。
もしかしたら江戸川乱歩とかは小学生の頃とかに読んだかもしれませんが、栞子さんじゃないのでそんなん覚えてねーよ。


新宿駅攻略本 RETURNS 夏宮B

大丈夫。夏宮Bの攻略本だよ。

大丈夫じゃないフラグじゃないか。
実際大丈夫でもありませんでした。
攻略本って言うからてっきり、5・6番線の謎のトイレとか、地下通路だけで都庁から区役所まで行こうとかそういうのをやってるかと思ったら、改札周りの紹介だけでほとんど終わってしまった。
ソフトと同時発売の攻略本のような、薄味な内容となってしまっています。
時間が経ってから出てくる完全版攻略本に期待しましょう。
あとサザンテラス口は本書記載の位置から、南口の対面に移動しているので注意しましょう。

個人的に待ち合わせのお勧めは中央東口の外か新南口かな。
中央東口は袋小路で狭いので見失いにくく、場所的に東側に用事がある場合に便利です。
新南口は単純に人が少ない。
わかってる人相手ならベルクの奥とか言いますけどね。
あの店面白い商品が色々あって楽しいです。
いつも人がいっぱいでなかなか入れないのですが。
あと店の外でも楽しい話があったり。楽しいというか意味がわからん。

……まあ、これまで新宿駅で待ち合わせをしたことがないわけですが。


2013/08/18 21:36 | Comments(0) | 買ったもの
PHP5.3.3 DatePeriodのバグ?
DatePeriodは日付の期間を表し、『1月1日から3月31日まで、1日2時間34分56秒ごと』のような自力で書くとめんどくさい繰り返しを簡単に取り扱うことができるようになります。

<?php
	// 開始/終了日時
	$start  = new DateTime('2013-01-01 00:00:00', new DateTimeZone('Asia/Tokyo'));
	$finish = new DateTime('2013-01-01 00:00:03', new DateTimeZone('Asia/Tokyo'));
	
	// 1秒毎に分割
	$dateInterval = new DateInterval('PT1S'); // 1秒
	$datePeriod = new DatePeriod($start, $dateInterval, $finish);
	
	// 1秒ごとに実行
	foreach($datePeriod as $key=>$val){
		$val1 = clone $val;
		$val2 = clone $val;
		$val2->setTime(0, 1, 0); // $val2は0時1分0秒を指定する
		
		print( 'val1:' . $val1->format('Y-m-d H:i:s'));
		print( 'val2:' . $val2->format('Y-m-d H:i:s'));
	}

    val1:2013-01-01 00:00:00
    val2:2013-01-01 00:01:00
    val1:2013-01-01 00:00:01
    val2:2013-01-01 00:01:01 // bug
    val1:2013-01-01 00:00:02
    val2:2013-01-01 00:01:01 // bug

$val2には0時1分0秒を指定したはずなのですが、何故か1秒おまけされてしまっているところがあります。
DatePeriodから取得したDateTimeに対してsetTimeするとおかしな値になるぞ、というバグです。
例では秒だからまだ気付かれにくいですが、'P1D'にすると1日ずれるのでわりかし事故です。

なんか開発中に日付が一日ずれてしまう問題に突き当たり、どう見てもソースは合ってるんだが何故だろうと延々悩んでいたら実はPHPのバグだったとかいう。
いやっほうバグを見つけてやったぜいと思ってたら、当然とうの昔に修正されている既知のバグでした。

ノートによると5.3.5では直っていたようです。
PHP5.4.7では正しく計算されるようになっていたのを確認しました。
PHPではしれっとこういうことがあったりするのが怖いですね。


2013/08/16 23:32 | Comments(0) | PHP
PHP5.5.0 「第6回オフラインリアルタイムどう書くの参考問題」をPHPで解く
http://qiita.com/Nabetani/items/4c60f10b73812e86441c
http://nabetani.sakura.ne.jp/hena/ord6lintersection/

L字型の領域をふたつ作り、重なった部分の数を算出するという問題。
一見めんどくさそうですが、実はL字じゃなくて長方形*2とみなせば余計なこと考えなくていいので楽。
<?php

	class INTERSECTION{
		
		/**
		* 面積を返す
		* @param  String 「23-94-28,89-06-51」みたいな文字列
		* @return String 「11」みたいな文字列
		*/
		public function get($input){
			// 10*10のマップ
			$map = str_repeat('0', 100);
			
			// 入力値を分割
			$input = explode(',', $input);
			$data1 = explode('-', $input[0]);
			$data2 = explode('-', $input[1]);
			
			// マップ埋め
			$map = $this->bury($map, $data1[0], $data1[1], 1);
			$map = $this->bury($map, $data1[0], $data1[2], 1);
			$map = $this->bury($map, $data2[0], $data2[1], 2);
			$map = $this->bury($map, $data2[0], $data2[2], 2);
			
			// 重複したところをカウント
			return (string)substr_count($map, '3');
		}
		
		/**
		* 長方形内部をビット和で埋める
		* @param String マップ
		* @param String 頂点の座標
		* @param String 対角線上の頂点の座標
		* @param int 埋める値
		* @return String マップをビット和で埋めたもの
		*/
		public function bury($map, $angle1, $angle2, $val){
			for($x = min( $angle1[0], $angle2[0] );$x <= max( $angle1[0], $angle2[0] ); $x++){
				for($y = min( $angle1[1], $angle2[1] );$y <= max( $angle1[1], $angle2[1] ); $y++){
					$map[(int)$x.$y] = $map[(int)$x.$y] | $val;
				}
			}
			return $map;
		}
	}
	
	// テスト
	$test = [
		['23-94-28,89-06-51', '11'],
		/* 省略 */
	];

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

30分くらいで終わりました。
埋める部分の求め方がとっても力業なかんじがしますが、先日諦めたビット演算を今回はうまく使えたので満足です。

なお30分にはコメントとかは含んでいません。
ガガッと書いて30分で動いた、完成!としてから整形してJavadocとか書いてます。

それにしてもいくら読んでもこれが理解できぬ。


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



2013/08/12 23:59 | Comments(0) | PHP
買ったものリスト 2013/08/11

子ひつじは迷わない 泳ぐひつじが3びき 玩具堂
子ひつじは迷わない うつるひつじが4ひき
子ひつじは迷わない 騒ぐひつじが5ひき
子ひつじは迷わない 贈るひつじが6ぴき
☆☆☆☆☆

一巻読んだだけでこの程度?とか言った私が間違っていた。
審査員の目は確かだったよ。

多少矛盾が生じようとも、面白ければそれでよかろうなのだと後付設定をこれでもかと盛り込み細かいことは気にせず勢いで突き進む川原礫。
後付設定の解消を後回しにしては積み残しの棚がえらいことになってるけどやっぱり細かいことは気にしない橙乃ままれ。

玩具堂の後付設定は、あたかも最初からそこに存在することが決定されていたかのような、計算ずくで用意されていたかのような配置です。
言うなれば野村美月。
後から出てきた要素が、ゲストでおしまいではなく次回以降の展開に組み入れられ、どんどんこの世界が複雑精緻化していきます。
本作は、巻を重ねる毎にその面白さが増していく構造だったのだ。
このことを一巻の時点で見いだしていた審査員はまさに慧眼と言わざるを得ない。

……が、6巻以降音沙汰がありません。
「6巻の次は新シリーズ書いてみましょう」とか言いやがったクソ編集は死に腐れや!

寿 Marriage short story 婚姻短編集 ロケット燃料★21 秋★枝
☆☆☆

東方キャラがウェディングドレスを着るだけという、ひたすらにやにやするだけの話。
内容は全くありませんが、まあそれはよくあることです。
霊魔理はそこそこよかったけど後半微妙に手抜きっぽいのが気にかかる。
ちなみに作者がハナコ@ラバトリーの人だったのには全く気付いていなかった。


2013/08/11 22:58 | Comments(0) | 買ったもの
今週の実績 2013/08/11
2013/08/07の実績

地球防衛軍4

ヘクトル・ハンター 15
ヘクトルを900機破壊する

2013/08/04の実績

地球防衛軍4

マスターエアレイダー 15
エアレイダーの体力が1000に到達


2013/08/11 22:53 | Comments(0) | 実績
PHP5.5.0 「第6回オフラインリアルタイムどう書くの問題」をPHPで解く
http://qiita.com/Nabetani/items/5e1c944541f09f0f9711
http://nabetani.sakura.ne.jp/hena/ord6kinship/

家系図から二人の関係を算出します。

<?php
	class RELATIONSHIP{
		
		/**
		* 続柄を返す
		* @param  String 「5->2」みたいな文字列
		* @return String 「mo」みたいな文字列
		*/
		public function get($input){
			// 続柄
			$relation = ['me', 'mo', 'da', 'si', 'au', 'ni', 'co'];
		
			// ->で分割
			list($from, $to) = explode('->', $input, 2);
			$from = (int)$from;
			$to = (int)$to;
			
			// 続柄判断
			foreach($relation as $val){
				if($this->{'is'.ucfirst($val)}($from, $to)){ return $val; }
			}
			return '-';
		}
		
		// 自分自身であるか
		private function isMe($from, $to){
			return $from === $to;
		}
		
		// 親であるか
		private function isMo($from, $to){
			return $this->getMo($from) === $to;
		}
		
		// 娘であるか
		private function isDa($from, $to){
			return $this->getMo($to) === $from;
		}
		
		// 姉妹であるか
		private function isSi($from, $to){
			return $this->getMo($from) === $this->getMo($to);
		}
		
		// おばであるか
		private function isAu($from, $to){
			return $this->getMo($this->getMo($from)) === $this->getMo($to);
		}
		
		// 姪であるか
		private function isNi($from, $to){
			return $this->getMo($this->getMo($to)) === $this->getMo($from);
		}
		
		// いとこであるか
		private function isCo($from, $to){
			return $this->getMo($this->getMo($to)) === $this->getMo($this->getMo($from));
		}
		
		// 母を取得
		private function getMo($from){
			return intval(($from+1)/3);
		}
	}
	
	// テスト
	$test = [
		['5->2', 'mo'],
		/* 省略 */
	];

	$relationship = new RELATIONSHIP();
	foreach($test as $key=>$data){
		$answer = $relationship->get($data[0]);
		if($answer !== $data[1]){
			print('えらー');
		}
	}
とりあえず各メソッドを作っていたら答えになっていた。
時間は30分足らず。

さてロジックをよく見てみると、姉妹であるかのチェックで、自分自身ではないという確認を行っていません。
よって実際は正確な判定ではないのですが、しかし今回は先に自分自身であるかを確認しているので事実上問題ありません。
おば判定で親チェックを行っていない、いとこ判定で姉妹や自分自身チェックを行っていないことについても同様です。
順不同でもきちんと判定を行いたいのであればそこらのチェックも必要になります。


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



2013/08/09 23:59 | Comments(0) | PHP

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]