毎週火曜日と木曜日に自宅で仕事をしている同僚がいます。午前8:00頃、彼は次のテキストを含むメッセージを送信します。
こんにちは今日は自宅で仕事をしています
彼が毎日家にいるという負担から彼を解放するために、私たちは彼のためにこの仕事を自動化したいと思います。
チャレンジ
次のようなコードをできるだけ少ないバイトで記述します。
- 現在の時刻を受け取る:コードは、現在の年、月(1〜12)、日(1〜31)、時間(0〜23)、分(0〜59)、および曜日の値を受け取ることができます。 (この番号が0から始まるか1から始まるかを選択できます。0/ 1が日曜日、月曜日、またはその他の日を意味する場合)。代わりに次のような構造を受け取ることが
Date
、DateTime
、Calendar
または他の時間関連の構造は、あなたの言語がそれを許可している場合。yyyyMMddHHmm
必要に応じて日付を含む文字列、または日付と時刻の2つの個別の文字列、および曜日を含む整数を受け取ることもできます。お気軽に。 - メッセージを仕事のチャットに送信する必要があるかどうかを示す、2つの一貫した真実と偽の値を返します。
ルール
- このコードは定期的に呼び出されると想定されています。それにもかかわらず、正確な周期性は無関係です。
- 曜日が火曜日または木曜日で、時刻が午前8時でエラーマージンが10分(7:50から8:10までを含む)である場合、真偽値を返す必要があります。
- 指定された日のそれらの時間の間にコードが初めて呼び出される場合にのみ、真偽値を送信する必要があります。ボットが同じメッセージを連続して何度も送信するのは望ましくありません。この制限を管理する方法は完全にあなた次第です。
- コードは、繰り返し実行される独立したプログラムの場合もあれば、常に実行されているより大きなコードの一部である場合もあります。あなたの選択。
- コードの実行の間に再起動は行われないと想定できます。
- 日付は常に正しいと仮定することができます。
- コードについて、特に永続性を実現するために使用される方法について説明することをお勧めします。
例
(Week starts on Monday: 1, the following invokations will be made in succession)
2018,08,27,08,00,1 = falsey (not Tuesday or Thursday)
2018,08,28,07,45,2 = falsey (out of hours)
2018,08,28,07,55,2 = truthy (first time invoked this day at the proper hours)
2018,08,28,08,05,2 = falsey (second time invoked this day at the proper hours)
2018,08,28,08,15,2 = falsey (out of hours)
2018,08,29,08,00,3 = falsey (not Tuesday or Thursday)
2018,08,29,18,00,3 = falsey (not Tuesday or Thursday)
2018,08,30,07,49,4 = falsey (out of hours)
2018,08,30,07,50,4 = truthy (first time invoked this day at the proper hours)
2018,08,30,07,50,4 = falsey (second time invoked this day at the proper hours)
2018,08,30,08,10,4 = falsey (third time invoked this day at the proper hours)
2018,08,30,08,11,4 = falsey (out of hours)
2018,09,04,08,10,2 = truthy (first time invoked this day at the proper hours)
これはcode-golfなので、各言語の最短コードが勝つかもしれません!
YYYYmmdd
と時間のような単一のパラメータとして日付を取ることはできますHHss
か?