p_tan's blog

勉強日記です。ツッコミ大歓迎

2011-01-01から1年間の記事一覧

POD型の初期化

C++

参考サイト C++における構造体の初期化 | 株式会社きじねこPOD(Plain Old Data)型の初期化には集成体(aggregate)用の{}による初期化とは別に値初期化というものが使えるらしい。 以下VC++2005 Express Editionの実行結果と共に。 #include <vector> #include <iostream> // POD</iostream></vector>…

整数型か浮動小数型かで四捨五入するかどうか分岐する関数テンプレート

C++

こんな関数テンプレートがあったら使い所があるかも。 #include <cassert> // RetTypeが整数型の場合は四捨五入した値を返し、 // RetTypeが浮動小数型の場合はそのままの値を返す。 template<typename RetType, typename ArgType> RetType IfIntegralThenRound(ArgType val) { return static_cast<RetType>(val + 0</rettype></typename></cassert>…

汎用LessBy

C++

小さなクラスを特定のメンバの値を基準にしてソートしたい場合。 しかも、Boost.MultiIndexを使うのは大げさだなーという時。 C++11ならラムダ式で書けるが、それでもめんどくさい。 例: class X{ int a; double b; public: // ...コンストラクタとか... in…

Seq.triplewise #fsharp

F#

F# Snippetsに投稿。 Seq.pairwiseの3つ組版。http://fssnip.net/50

シーケンスの要素をグループに分ける Seq.groupBy #fsharp

F#

Seq.groupByはseq中の要素に対応する整数値でseqの要素をグループに分ける。 seq {1..100} |> Seq.groupBy (fun x -> x % 2) // seq [(1, seq [1; 3; 5; 7; ...]); (0, seq [2; 4; 6; 8; ...])] 使用例 // シーケンスをn個毎のサブシーケンスに分ける let sp…

シーケンスの前後の値を見ながらの処理 Seq.windowed [追記] #fsharp

F#

Seq.windowedはseq中の隣接するn要素の配列のseqを返す関数。 > Seq.windowed 3 [1..5];; val it : seq<int []> = seq [[|1; 2; 3|]; [|2; 3; 4|]; [|3; 4; 5|]] 例えば数値のシーケンスの極大値のみをselectする処理は以下のように書ける。 > let SelectLocalMaxs (</int>…

C++のwchar_t型について

C++

参考 日本工業標準調査会:データベース検索-JIS検索でプログラム言語C++を検索 ワイド文字 - Wikipedia charとUnicodeとワイド文字をごっちゃにしないために wchar_t ワイド文字を表す型 規格ではサイズは16bitとは限らない 規格では内部表現の規定がないの…

F#で簡易DPLL 修正版

F#

この前の日記で書いた簡易DPLLをちょいと修正、充足可能なときにリテラルへの割り当てを返すようにしてみた。Ideone.com | 9qbbk

なぜC#よりもF#なのか

F#

2017/09/05追記 本記事の内容は古くなったので、新しい記事を書きました なぜC#よりもF#なのか 2017 #fsharp - p_tan's blog 元ネタは id:bleis-tift さんのデブサミ2011の発表です。 デブサミ 2011 で F# について話してきました! - ぐるぐる~C#と比較し…

簡易DPLLアルゴリズムによるSAT Solver

F#

そろそろ関数型言語もやっとかないとね、ということでF#でプログラミングしてみる。 参考文献 プログラミングF# 実践F# 関数型プログラミング入門 SAT Solver ちょっと前に「P=NP証明か?」とか話題になったね。 DPLLアルゴリズム DPLLアルゴリズム - Wikipe…