Author Archives: AKIYAMA

2016-01-16

2016冬の新番組

ようやく寒くなって冬らしくなってきましたね。番組改編期です。おおむね第一話見終わりました。

01/05(火) 24:30~ TOKYO MX プリンス・オブ・ストライド オルタナティブ  
01/06(水) 24:00~ TOKYO MX 無彩限のファントム・ワールド  
01/06(水) 25:00~ TOKYO MX SUSHI POLICE(スシポリス)  
01/06(水) 25:35~ TOKYO MX ハルチカ~ハルタとチカは青春する~  
01/07(木) 22:00~ TOKYO MX アクティヴレイド 機動強襲室第八係 第一期  
01/07(木) 22:30~ TOKYO MX 少女たちは荒野を目指す  
× 01/07(木) 23:30~ TOKYO MX NORN9 ノルン+ノネット  
01/07(木) 25:46~ TBS ファンタシースターオンライン2 ジ アニメーション  
01/07(木) 25:50~ フジテレビ 僕だけがいない街  
01/07(木) 26:16~ TBS だがしかし  
01/07(木) 26:20~ フジテレビ 暗殺教室 第2期  
01/08(金) 21:00~ 日本テレビ系 ルパン三世 -イタリアン・ゲーム- ※テレビスペシャル
01/08(金) 22:30~ TOKYO MX ディバインゲート  
× 01/08(金) 23:00~ TOKYO MX おしえて!ギャル子ちゃん ※ウルトラスーパーアニメタイム
01/08(金) 23:00~ TOKYO MX 石膏ボーイズ ※ウルトラスーパーアニメタイム
01/08(金) 23:00~ TOKYO MX 旅街レイトショー ※ウルトラスーパーアニメタイム
× 01/08(金) 25:05~ TOKYO MX GATE(ゲート) -自衛隊 彼の地にて、斯く戦えり- 第2クール  
01/08(金) 25:40~ TOKYO MX 紅殻のパンドラ  
○+ 01/08(金) 26:35~ TBS 昭和元禄落語心中  
01/–(土) 10:30~ テレビ東京系 FAIRY TAIL ZERO  
01/09(土) 22:00~ TOKYO MX ブブキ・ブランキ  
01/09(土) 22:30~ TOKYO MX ラクエンロジック  
01/09(土) 23:30~ TOKYO MX デュラララ!!×2 結  
01/09(土) 25:30~ TOKYO MX 霊剣山 星屑たちの宴  
01/09(土) 26:25~ 日本テレビ ナースウィッチ小麦ちゃんR  
01/09(土) ??:??~ 物語シリーズ公式アプリ 暦物語 ※スマホアプリで配信
01/10(日) 22:00~ TOKYO MX 虹色デイズ  
01/10(日) 22:27~ TOKYO MX 大家さんは思春期!  
01/10(日) 22:30~ TOKYO MX Dimension W (ディメンション ダブリュー)  
01/10(日) 24:30~ TOKYO MX 灰と幻想のグリムガル  
× 01/10(日) 25:05~ テレビ東京 シュヴァルツェス マーケン  
01/10(日) 26:35~ テレビ東京 闇芝居 第3期  
01/11(月) 24:00~ TOKYO MX 赤髪の白雪姫 第2クール  
01/11(月) 24:30~ TOKYO MX 最弱無敗の神装機竜(バハムート)  
01/11(月) 25:05~ TOKYO MX てーきゅう 第7期  
01/11(月) 25:08~ TOKYO MX 血液型くん!4  
01/11(月) 25:11~ TOKYO MX 魔法少女なんてもういいですから。  
01/11(月) 26:05~ テレビ東京 蒼の彼方のフォーリズム  
01/12(火) 21:00~ ニコニコCh おじさんとマシュマロ  
01/13(水) 25:05~ TOKYO MX この素晴らしい世界に祝福を!  
01/15(金) 25:55~ TBS 亜人  

第一話の段階で最も目を引いたのは昭和元禄落語心中でしょうか。

続いて僕だけがいない街ハルチカ~ハルタとチカは青春する~あたりが気になりました。

例によってあくまで第一話の第一印象と言うことで。最初だけ良くて後はサッパリ、または、その逆ということも良くありますので。

2016-01-14

タブレットアームスタンド購入

寝ながらタブレット、寝タブとでもいうのでしょうか。Xperia Z2 Tabletを使い始めてからというもの寝ながらアニメを見ることも多くなりました。

しかし寝ながらタブレットは姿勢が難しいんですよね。うつ伏せや横向きで長時間は辛いし仰向けだと腕が疲れてしまいます。Xperia Z2 Tabletは10.1インチ426gとそれほど重いわけではないのですが、まぁ、極端な話何も持たずに腕を上に伸ばし続けるだけでも疲れますしね。

というわけで「 タブレット アーム 」で検索して何か良いものはないか探しました。

ザッと見てみると大半がクランプ式(デスクライトでもおなじみのアレ)ですね! 机やベッドのパイプ等に固定して使うことを想定しているようです。困りました。床に布団を敷いているのでこれは使えません。

床に置いて使えるものは種類が限られますがいくつか存在します。

仰向けで使えそうなのは下の二つくらいでしょうか。アーム長は両者とも非可動部分があるので比較が難しいですが、全体ではEEA-MR002の方が長いです。鉄板の加工もEEA-MR002の方が良さそうなので、今回はこちらで。

イーサプライ iPad タブレットPC アームスタンド EEA-MR002

届いた箱はそれほど大きくなく、組み立てもとっても簡単でした(取り扱い説明書)。

肝心の寝ながら仰向けで使えるかどうかですが、ギリギリ大丈夫でした! 布団の横に置いてほぼ布団の中心まで伸ばせます(敷き布団の下に台座を挟んで端から45cmくらい)。画面の向きもジョイントがよく出来ていて下向きでも自由な向きで固定できます。

アームは固いので片手で変形というわけにはいきませんが、柔軟性と保持力を両立させるのは原理的に難しいので仕方がないですね。ドールの関節みたいなものです。どちらかといえば固い方が良いでしょう。

タブレットを掴む部分の根元にあるジョイントはボール+筒+つまみネジで十分な可動範囲と保持力を備えています。

タブレットのつけ外しも簡単ですね。レバーで簡単に調整・固定ができますし、スポンジがあるのでタブレットが滑って落ちることもありません。

というわけで、ますます寝タブがしやすくなってしまいました。あーあ。

2016-01-06

paiza Online Hackathon 7 めがね問題をSwiftで

恋愛SLG: プログラミングで彼女をつくる|paizaオンラインハッカソン7 というのを見かけたのでやってみました。

水着問題はちょっと難しかったです。

https://paiza.jp/poh/ando/share/fb746b63

「Swiftオープントップ50」というのもやってみました。 めがねがもらえる問題をSwiftで解き、平均速度とプログラムのバイト数を競うというものです。 この手の競技プログラムはやったことがありませんし、そもそもSwiftでプログラムを作ったこともありませんが、この機会に試してみました。

let
f={readLine()!}, // 1行読み込み関数
g={Int(f())!}, // 1行整数読み込み関数
h={(0..<$0).map{_ in f().characters.flatMap({Int(String($0))})}}, // 画像読み込み関数(h(size)でsize*sizeの2次元配列を返す)
n=g(),a=h(n), // 画像Nを読み込む
m=g(),b=h(m), // 画像Mを読み込む
o=n-m+1, // NとMの大きさの差を求める
s={a[$0/o+$1][$0%o..<$0%o+m] != b[$1][0..<m]}, // 画像の行に沿った1区間を比較する関数(ArraySlice同士の比較)
z=(0..<o*o).indexOf{p in (0..<m).indexOf{s(p,$0)}==nil}! // NにMを重ねたときに一致しない行が見つからなかった最初の左上座標を探す
print(String(z/o)+" "+String(z%o))

改行を削除して 0.01秒 271byte、この記事作成時点で23位。

1位の54 byteなんてどうやっているんでしょうね。ひょっとしてテストケースの性質を利用している?

最初はピクセルデータを文字列のままマッチングする方法を試したのですが、Swiftは文字列の部分取りだしが非常に面倒なようで、startIndex.advancedByなどと長い名前を打たされたあげくスピードもテストケース5で0.01を逃してしまったので方針を変更。諦めて配列を作って比較するようにしました。

Swiftいいですね。Closureは短く書く書き方もあって便利です。

Swiftの言語リファレンスやライブラリリファレンスと睨めっこしながら作成しました。古いバージョンのコードは結構動かなくなってるんですね。ぐぐって調べたコードがコンパイルできなくて難儀しました。

hの中にある"0 1 1 0"みたいな文字列を[0,1,1,0]へ変換する部分が短く書けなくて悩みました。Swiftのバージョンによっても書き方が違ってくるみたいです。

sやzのところで/や%を使っているところがありますが、このあたりの書き方次第で「Expression was too complex to be solved in reasonable time」というエラーが出てコンパイルできない場合が多々ありました。コンパイル時間(サーバの応答時間?)も書き方によって体感できるくらい差が出ます。元々sの比較処理は関数化せずにzの中にあったのですが、1つの式で書くとこのエラーが出てしまうため、式を分割しなければなりませんでした。分割するとletとreturnの文だけ文字数がかかってしまうので悩んだのですが、sを関数としてくくり出したら何とかコンパイルは通りました。

[1,2,3,4,5][2…3]==[3,4]が通るのにlet n=[1,2,3,4,5],m=[3,4];n[2…3]==mが通らないのは不思議でした。n[2…3]==[3,4]は通ります。ArraySlice<Int>と[Int]を引数に取る==演算子が無いからみたいなのですが、mは[Int]だけど[3,4]は違う?

(2015-01-07追記:なんとprint(a,b)でa bと出力されるんですね! あと細かいところを少し調整して、これだと249byte)

let
f={readLine()!},
g={Int(f())!},
h={(0..<$0).map{_ in f().characters.flatMap({Int(String($0))})}},
n=g(),a=h(n),
m=g(),b=h(m),
o=n-m+1,
s={a[$1+$2][$0..<$0+m]==b[$2][0..<m]}, // !=ではなく==にして呼び出し側で!sとした。!=だと!=の前後に空白を入れないとコンパイルエラーになるが==なら空白はいらない(-2 +1)
z=(0..<o*o).indexOf{p in (0..<m).indexOf{!s(p%o,p/o,$0)}==nil}!; //%o,/oはsからzへ移動。文字数は変わらない(-6 +6)けど、この方が分かりやすいし剰余も一回で済む。
print(z/o,z%o) //こう書けたorz(-21 +1)