2018-01-01から1ヶ月間の記事一覧

プロパティへの代入がコンストラクタ内のみなら、そのプロパティに private set を定義する必要はない

using System; class Person { public string Name { get; } // 代入はコンストラクタでのみ。private set; は不要 public int Age { get; } public Person(string name, int age) { Name = name; Age = age; } } class Program { public static void Main()…

N 番目の要素を O(1) で取得する Cycle クラスを作る

数列 a = { 0, 1, 0, -1, 0, 1, 0, -1, 0, 1, 0, -1, ... } のような 4 周期で繰り返す数列で、かつ N 番目の要素を O(1) で取得する Cycle クラスを作ってみました。 // 0, 1, ... を繰り返す数列 var zeroOne = new Cycle<int>(new[] { 0, 1 }); Console.WriteL</int>…

エラトステネスの篩

haskell.g.hatena.ne.jp 上の記事をみて、エラトステネスの篩を C# で書いてみました。 // 2, 3, 4, 5, ... static IEnumerable<int> Nums() { int n = 2; while (true) yield return n++; } static Func<int, bool> MakePrimeFilter(int prime, Func<int, bool> isPrime) { // x はこれ</int,></int,></int>…