参照渡しの密かなメリット

一時変数を消す際に役に立つ。

サンプルコード
https://paiza.io/projects/jW2hkCCvpNBykfq2iZZ2Dg

C/C++のswitch-caseはO(1)

仕事のプログラムでswitch-caseを使ってるプログラムを見て「確かswitch-caseってif-elseと同じでラベルの数に対してO(n)だったよな。O(log n)のstlのmapにでも書き換えさせたろ。」と思ったので調べてみたところ最近はハッシュによる探索でO(1)との情報を得たので調査。
見つけた


検証方法:
switch-caseでN個のラベルを定義してSIZE_MAX回だけ回してその間のタイムを計測。
ただし、最適化を防ぐために余計な処理もあり。


結果としてはタイムにばらつきはあるものの条件をラベル数、2でも10000くらいにしても1.5 micro secondsさえも超えず。

switch-case文のO(1)は本当だと思われるので最早、静的にラベルが決まる際にはswitch-caseを使わなければならない。mapは使ってはならない。
さらに検証をしたところC言語も同様に1.5micro secを超えなかったのでC系は全部そうなっているものかと思われる。


参考
O(n)についてはこちら。
https://qiita.com/asksaito/items/59e0d48408f1eab081b5

O(1)と書かれているページの一例
http://blogs.wankuma.com/rti/archive/2007/01/31/60020.aspx
https://stackoverflow.com/questions/6860525/c-what-is-faster-lookup-in-hashmap-or-switch-statement?rq=1

ググっていくと"ジャンプテーブルルックアップ"というキーワードにたどり着いた、しかしこれを解読するには多少のアセンブラの知識が必要そうなのでとりあえずここまでにしておく。

追記
効率の良い組込みC言語プログラミング
という本には「出現率の高い値を先に比較した方がいい」と涙ぐましい最適化方法が書いてある。どう考えてもO(1)である時に気にするような事ではない。因みに本の初版が2009年だそうなのでハッシュ変換はそれ以降だと思われる。
リンク
http://amzn.asia/2N6VNa1

循環複雑度/Cyclomatic Complexity

間違いなく学生時代に聞いたことがあるはずだけれども忘れてたのでメモ。
要するに一つの関数でどれくらいの経路があるか。小さければ小さいほど理想的で分岐命令とかループがあると増大していく。複雑な条件式(||とか&&とか)があるともっと増大する。
教科書通り、複雑化した条件をboolを返す関数にしたり、深くなってきたネストを外の関数に逃がすと増加を抑えられるはず。


もっと詳しく
https://jp.mathworks.com/discovery/cyclomatic-complexity.html
http://saturday-dory-fever.blogspot.jp/2012/04/cyclomatic-complexity.html
https://ja.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E7%9A%84%E8%A4%87%E9%9B%91%E5%BA%A6

アルティメット札束デッキ 〜お高いの三銃士を連れてきたよ〜

http://www.gachalog.com/list/52185056

ニノが高騰しててしかも「エリーゼと組み合わせたら明らかに強いなったらやるしかない。」と思って作ったデッキ。お高いの三銃士とはニノ、エリーゼ、ディアドラのこと。
3コスエリーゼが3枚しか無いのはどうしても見つからなかったから。そして若様のピン刺しは折角買ったから、お試しということで。3コスエリーゼが見つかったら若様抜きます。

アルティメットと名乗ってはいるもののフル+とかはやってないです。レシピのように+などは忠実に再現してあります(STとBの違いは適当)。全部+にするとかは勘弁してちょ。いや、マジで。
あとはマーカーをデュエマのバックベアード様にすれば完璧。

ただ、問題は遅すぎること。実際に相手に了承を取ってからマークスとへっくんを相手にしてみたけど30分で終われなかった。俺が慣れてないのもあるけれどもそれでもあまりにも遅すぎる。
やはりディアドラのせいでノノが寝たきりになるからね。そうするとお高いの三銃士の戦闘力60でしか殴れない。そんなんでマニキとかへっくんを倒せるわきゃない。実戦で使うとしたら黄色を抜いて赤でチキノノだね。ただし、それをやると札束度がガタ落ちするハメになる。

とりま、通販でへっくんを4枚買ったのでへっくんデッキを組みます。ニノで回収してアルマーズするのがあまりにも楽しそう。

第三回フォレオ杯で使ったデッキ

デッキレシピ公開ついでに貼り付け
予選で使ったカム子
http://www.gachalog.com/list/13351166
解説などは下記リンク + 第六弾からギュンターを退避に落とすルッツ君と手札不足対策にフェリシアを投入
http://d.hatena.ne.jp/samraimarket/20160911/1473604990


本戦で使ったキュアン(だけど1回戦負け)
http://www.gachalog.com/list/08360145
4コスティアモを使ってキュアンを強化して殴りたいがために組んだデッキ。フィンとエマを4枚づつ積んでるため後半にプロモシグルドが高火力になって出てくるので使ってて楽しいし相手からの反応も楽しい。

ChromeでFlashが使えない際の対処法

結構苦戦したので備忘録と拡散を兼ねてリンクを貼り付け。同じようなファイルがダブっているので削除する。あとやるときはちゃんと目的のファイルを見つけられるように「隠しフォルダ/ファイルを表示する」設定を忘れずに。
https://productforums.google.com/forum/#!topic/chrome-ja/E5pErSiBLJI
https://productforums.google.com/forum/#!topic/chrome-ja/7ohU2P5sVL8