組み合わせの列挙を行いたいということはしばしば起こります。例えば 0, 1, 2, 3, 4 の 5 つの数字から 3 つを取り出す組み合わせというのは {0, 1, 2}, {0, 1, 3}, {0, 1, 4}, {0, 2, 3}, {0, 2, 4}, {0, 3, 4}, {1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {2, 3, 4} の 10 通りあります。普通に書く場合は『Using Combinations to Improve Your Software Test Case Generation』のように書けばよいのですが,ここではあえてイベントを利用して書いてみたいと思います。
Read more...
プログラミング C#
C# の enum を扱うメソッドをジェネリックに書きたいと思うと,ジェネリック型制約に enum が使えないという問題に直面します[]。何通りか書き方が考えらます。これを,フラグの列挙型の値を与えると,フラグを分解して返すメソッド DecomposeFlag を書きながら考えて見ます。
[Flags]
enum Flag { None = 0, A = 1, B = 2, C = 3, D = 4, E = 5 }
// DecomposeFlag(Flag.None) -> { Flag.None }
// DecomposeFlag(Flag.A) -> { Flag.A }
// DecomposeFlag(Flag.C) -> { Flag.A, Flags.B }
// DecomposeFlag(Flag.C | Flag.E) -> { Flag.A, Flag.B, Flags.D }
// DecomposeFlag(Flag.None | Flag.E) -> { Flag.A, Flags.D }
Read more...
脚注
プログラミング, 雑感 C#, F#
最近のコメント