近況報告

    PAYDAY2 Blacklist Assist

    最近更新中のPAYDAY2のBlacklist MODの補助ツール
    ※特に理由が無い場合は最新バージョンを使用してください。


    ━━━━━━━━━━━━━━━━━━━━━━━━━━━

    ●もうすぐ誕生日ー
    なので、ほしいものリスト作りました!
    http://www.amazon.co.jp/registry/wishlist/AHIDXQ3XIJNR

    気軽に送ってね★ ※お塩とかだめよ・・・だめだからね。フリじゃないからね。

    ●SSDと液晶買ったよー
    ○ついに手を出してしまったSSD
    ウルトラ II SSD SDSSDHII-240G-J26C
    J25からJ26になり、省電力を実現した代わりとして読み書き速度が若干低下したそうだが、5400rpmのHDDにシステム領域を置いていた自分からすれば世界が変わったことは言うまでもない。
    もっと早くに買っておけばよかった!でも大満足!

    ○ついでに買ってしまった液晶
    これはちょっと後悔中
    JAPANNEXT JN-IPS3200FHD フルハイビジョン液晶モニター IPS-ADSパネル
    発売前セール中!って書かれて通常価格よりも1万円程度安かった?ので衝動買いしてしまったが・・・届いてみて、やはり大きい。大きいがFHDなので今まで満足してみていた動画などのあらが目立つように笑
    そして、ノングレアだと思い買ったが実際はハーフグレア、画面が暗くなると自分の姿が映る。
    ノングレアにするフィルムがあるようなので購入検討中(ほしいものリストに入ってるから送ってくれてもいいのよ♥)

    発色が悪い
    視野角は非常に良い。

    支払方法を代引きにしていていたにもかかわらず、JAPANNEXTの手違いで運送業者から代引き料金を請求されなかったので購入先に問い合わせたところ銀行口座を指定され、入金した。
    対応は素早く言葉も丁寧だったが、うーん。慣れてないのかな?


    ●プログラミング
    ○PD2BLA
    相変わらず全然いじってない!
    適当にいじったらPD2BLの設定ファイルの設定掻き消しちゃうようになった・・・もうコードがごちゃごちゃして読みづらいので基礎部分から書き直したい。
    スキルも新しくなったらしいのでそれに対応するようコード書き換えないと(またXMLとのにらめっこ)

    ○その他プログラミング
    最近とある理由でRainflow法のプログラムを書いているが・・・Rainflowの基礎論文とASTM E1049-85のアルゴリズムで同じ結果にならないような気がすることに気が付いて困惑。
    E1049-85を手に入れて読んでからどうするか考えねば。

    プログラムを書くときに常々拡張性に考慮して書かなければと思っているのだが、今回もこの拡張性に考慮しない書き方をしてしまったので、独自クラスの宣言を書き換え、それがために関連する個所百数を書き換え・・・いや大変。

    収納するデータはこちら
    NoTime(Datatime)Range(double)Cycle(bool)
    1T1R1C1
    2T2R2C2
    3T3R3C3
    nTnRnCn



    最初に書いたクラスがこちら
    Public Class  Raindrop{
    public List<Datatime> time = new List<Datatime>();
    public List<double> range= new List<double>();
    public List<bool> cycle = new List<bool>();
    }

    このクラスの宣言は小文字で行うこととして
    Raindrop randrop = new Raindrop


    これでも初期段階の処理では問題なかったのだが、これであると、行ごとに関連したデータとして扱っているというよりは、列で関連したデータとして扱っているので、ソートした後にTとRの関係を見ようとすると困ったことになる。

    たとえば、Rangeでソートしたとする。すると・・・

    NoTime(Datatime)Range(double)Cycle(bool)
    1T1R2C1
    2T2R1C2
    3T3R3C3
    nTnRnCn


    こうなる。
    ただ、ソートは簡単。

    rainfrop.range.sort()


    これだけで昇順に並べ替えてくれる。
    しかし、これでは困る・・・raindrop.time[1]のrangeを取り出そうとraindrop.range[1]を指定するとR1ではなくR2が出てくる・・・。

    そもそも、関連しているデータは列ではなく行なので、行で割るように作り直す。
    ついでに、メモリ使用量を考慮してDatatime型をlong型に置き換えた。(が、あまり効果的ではなかった?)

    行で扱う
    Public Class  Raindrop{
    public long time { get; set; }
    public double range { get; set; }
    public bool cycle { get; set; }
    }

    List<Raindrop> raindrop = new List<Raindrop>();


    これで行を積み重ねていく形に変えられた、しかし、これでは先ほどとは違い、rangeでのソートができないので、独自クラスとして実装する。
    参考にしたサイトはこちらhttps://www.ipentec.com/document/document.aspx?page=csharp-list-sort-use-comparison
    public static int Compare(RainDrop x, RainDrop y)
    {
    if (x.range < y.range)
    {
    return -1;
    }
    else if (x.range > y.range)
    {
    return 1;
    }
    else
    {
    return 0;
    }
    }

    これを宣言し、

    raindrop.Sort(Raindrop.Compare);

    と、Sortの方法に自分で作ったクラスを指定してやるとうまくいく。
    ソートというのは結局、2つを比較し大小を返しているだけらしい。
    大小を返せばあとはSortクラスが勝手に入れ替えを行ってくれる。


    NoTime(Datatime)Range(double)Cycle(bool)
    1T2R2C2
    2T1R1C1
    3T3R3C3
    nTnRnCn


    と、そういう話は今回は結構どうでもいいことで、問題はアルゴリズム。
    どうしたものやら。
    スポンサーサイト