現在、複数の(再発生している)アラームを持つアラームクロックで作業しています。アラームのセットから最初のアラーム時刻を取得する
私はMicrosoft IoTがインストールされたラズベリーパイと、レイアウトとその基礎となるアルゴリズムについてはUWP(C#)を使用しています。
私が実行している問題は、次のアラーム時刻を取得することです。
擬似コード:
Select nextAlarm()
For all alarms a
if (((a.time >= now.time AND a.repeatDay == now.DayOfWeek)
OR a.repeatDay > now.DayOfWeek) AND a.dateTime < currentAlarm.dateTime)
currentAlarm = a;
現在の日が水曜日である場合は、この(n)は、すべてのアラームの時間と機能a.repeatDayをOがかかります> now.DayOfWeekは些細な機能(ではなく、次のアラームは月曜日です)、機能は動作しません。
上記の機能が動作するように(そしてO(n)よりも速く)アラームを保存するにはどうすればよいですか、問題が解決されたという繰り返し日をどのように保存することができますか?現在SQLite.net-PCLパッケージに
アラームとRepeatDayクラス使用
:
public class Alarm
{
[PrimaryKey, AutoIncrement]
public long Id { get; set; }
[NotNull]
public string Name { get; set; }
[NotNull]
public DateTime Time { get; set; }
[NotNull]
public int Repeat { get; set; }
public Alarm(string name, DateTime time, RepeatWeek repeat)
{
this.Name = name;
this.Time = time;
this.Repeat = repeat;
}
}
public class RepeatWeek
{
int repeat = 0;
public static implicit operator int(RepeatWeek w)
{
return w.repeat;
}
public void setDay(DayOfWeek w)
{
repeat |= 1 << (int)w;
}
public void removeDay(DayOfWeek w)
{
repeat &= ~(1 << (int)w);
}
public DayOfWeek getNext(DayOfWeek d, bool inclToday = false)
{
throw new NotImplementedException();
return DayOfWeek.Monday; //Needs work
}
}
次回の予定アラームが必要ですか? – maccettura
はい、私は現在、繰り返しの日に立ち往生しています – Boe007
ちょうどダニをチェックし、最低値のものをつかむのはなぜですか? – maccettura