2011-12-06から1日間の記事一覧

外部イテレータもできた!

C#

前回 のForEachDetailを、外部イテレータからも利用できるためには、外部イテレータが「現在の値」を取得できるようにしないとダメ。2分木のイテレータに関して再開 - チキン煮込みチーズミックス4辛 からは内部イテレータだけに話を絞っていたので、ForEach…

内部イテレータできた!

C#

ForEachDetailLeftとForEachDetailRightを単純に組み合わせてできるわけじゃなかった。だけどヒントにはなった気がする。やり方は違うけど、結果的に 木構造の外部イテレータ - チキン煮込みチーズミックス4辛 となんか似てる。何がって言われてもよくわから…

再左の葉から根へ

C#

できたっぽい?こんな感じ。 /// <summary>左と自分を処理する</summary> static void ForEachDetailLeft( TreeNode<T> root, Action<T> action, JobHolder holder) { // nodeを根として、最小のノードまで進む TreeNode<T> n = root; while (n._left != null) n = n._left; // そこから</t></t></t>…

問題を単純にしてみる

C#

難しい原因は、 左の部分木を走査 自分の値を走査 右の部分木を走査 という感じで、再帰する部分が2ヶ所あることだと思う。ということで、まずは、 左の子を無視して、自分→右の子と走査する という感じで、ものすごく簡単にしてみた。するとこうなる。 /// <summary></summary>…

配列との違いは何だろう

C#

木構造の内部イテレータでつまづいている話の続き。木構造で考える前に、配列で考えていたので、それに戻ってみる。配列をラップしたMyArrayクラスのソースコードは以下の通り。 class MyArray<T> : IIterableIn<T> { T[] _ar; public MyArray(T[] ar) { _ar = ar;</t></t>…

2分木のイテレータに関して再開

C#

数か月放置していたこのテーマ。またこの数日考え始めたけど、まだ解決してない。yield returnで2分木の外部イテレータ作れたから、考える意味なくなったけど。いや!意味がないはずはない。どこかで役に立つはず!NextJobSetterやNextJobAccessorは、次に行…