私はC#を使用してNodaTime.IsoDayOfWeek
日のリストを取る関数を作成しています。入力を連続する日のグループにグループ化したいと思います。リストが閉じたループがあるので、日曜日と月曜日が連続していることを曜日のリストを連続する日のグループにグループ化する
{ Mon, Tue } => { { Mon, Tue } }
{ Mon, Wed } => { { Mon }, { Wed } }
{ Mon, Tue, Fri, Sat } => { { Mon, Tue }, { Fri, Sat } }
{ Mon, Wed, Fri, Sun } => { { Sun, Mon }, { Wed }, { Fri } }
{ Mon, Tue, Wed, Thu, Fri, Sat, Sun } => { { Mon, Tue, Wed, Thu, Fri, Sat, Sun } }
お知らせ:
はたとえば、以下のリストは、次の出力を与える必要があります。さらに、結果リストは、最初の日が入力リストに含まれていない日(または完全なリストが含まれている場合は月曜日)の直後に続くように順序付けられなければなりません。
Mauricio Scheffer published a great extension method to group consecutive integers here:
public static IEnumerable<IEnumerable<int>> GroupConsecutive(this IEnumerable<int> list) {
var group = new List<int>();
foreach (var i in list) {
if (group.Count == 0 || i - group[group.Count - 1] <= 1)
group.Add(i);
else {
yield return group;
group = new List<int> {i};
}
}
yield return group;
}
私は日曜日と月曜日はまた、連続しているので、グループの日にこれを修正する方法を見つけ出すことはできませんが。日曜日と月曜日が連続していると考えられる連続日をグループ化するにはどうすればよいですか?
(http://stackoverflow.com/questions/4681949/use-linq-to-group-a-sequence-of-numbers-with-no-gaps)[これをチェック] - 好きDTBの答えを - あなたのニーズにどのように適応できるかを見てください –