SEはいつダウンしますか?


13

SEは本日 2017-05-04の00:00 UTCに00:20 UTCまでダウン/読み取り専用になります

あなたの課題は、SEがダウン/読み取り専用の場合は真の値を出力し、SEがそうでない場合は偽の値を出力することです。入力がない場合があり、SEがダウン/読み取り専用であるかどうかを確認するために、日付ビルトインを使用する必要があります(実際にSE APIを照会しない!)出力例:

12:34 UTC 03 May 2017 -> false

00:00 UTC 04 May 2017 -> true

00:20 UTC 20 May 2017 -> undefined, see below

それは未定義の振る舞いです。なぜなら、それは時間の窓から離れすぎているからです。明確にするために、プログラムは8:00今日のUTC (5/3/17)から1:00明日(5/4/17)のUTC まで実行されると想定できます。

00:21 UTC 04 May 2017 -> false

00:20 UTC 04 May 2017 -> true

00:10 UTC 04 May 2017 -> true

trueおよびだけでなく、真実または偽の値が許可されることに注意してくださいfalse。最も近い秒まで正確でなければならず、システムクロックを変更しないでください!プログラムが+0 UTCタイムゾーンのマシンで実行されていると仮定することができます。


8
sudo time <insert time here> && echo true
Okx

8
アメリカではなく普遍的な日付形式を使用するようにテストケースを更新することをお勧めします。
シャギー

12
ステップ1、ボット軍をDDoS SEにトリガー、ステップ2、「1」を返す
-user2023861

9
まず、SO SREマネージャーとして、私はこの質問が大好きだと言いたいです。よくできました!ただし、サイトがハードダウンすることはないことを人々に思い出させたいと思います...ただ読み取り専用モードで。とはいえ、この質問の答えを選んで、手順を開始するタイミングを判断するのに役立てます。
-TomOnTime

3
それは、あなた自身の答えが無効であることを意味しますか?他の多くの答えもそうです。元のリビジョンも現在のテストケースも秒に言及していません。
デニス

回答:



16

JavaScript(ES6)、26 24 23 22 21バイト

Shaggyのおかげで3バイト、Lukeのおかげで1バイト節約されました。

_=>new Date/12e5%72<1

現在の日に経過した時間が1200000ms(1200sまたは20min)未満かどうかを確認します。ダウンタイムは21分ではなく20分であると想定しています。これはリンクされた投稿の場合のようです。00:20UTC排他的上限です。


new Date代わりにを使用して2バイトを節約しますnew Date()
シャギー

<2別のバイトを保存します。
シャギー

1
あなたは必要ありません+/に自動的に変換new DateしますNumber
ルーク

関数宣言(_ =>)が必要ですか?JavaScriptはグローバルに実行できます。
ブリリアンド

@Brilliandはい、そうでない場合は出力が必要とされるであろう、最短ビーイングalert多くの長い
ASCIIのみ

9

パイソン241の 39バイト

Erik the Outgolferのおかげで2バイト節約

import time
print time.time()/1200%72<1

オンラインでお試しください!

私のJSおよびCharcoalの回答と同じアルゴリズムを使用します。


とは/72<1違う<72
-xnor

@xnorおっとごめん、間違ってそれをコピーした今、固定
ASCIIのみの

いいえ、print time.time()/1200<72同じことを表現するより短い方法になると思います。
-xnor

@xnor私はかかわらず、エポックの初日に動作することを確信している
ASCIIのみの

おっと、私は%1200/72<1-> を意味しました%1200<72。TIOは%1200/72<1バージョンにリンクしていますが、それは間違いですか?
xnor

7

ゼリー、9バイト

6ŒT|0Ḍ<21

TIOの場合、TZに設定する必要がありUTCます。

オンラインでお試しください!

使い方

6ŒT|0Ḍ<21  Main link. No arguments.

6ŒT        Get the current time as a string, in the format HH:MM.
   |0      Bitwise OR each character with 0. This casts the characters to int and
           maps the non-digit character : to 0.
     Ḍ     Undecimal; convert from base 10 to integer.
      <21  Compare the result with 21, so 00:00 to 00:20 return 1, all others
           return 0.

(誰もが)デニスに打ち負かされた!良くやった!
Programmer5000


ダウンタイムが最新の場合00:21、1バイト節約できます
デニス


4

zsh、38 37バイト:

date +%H\ %M|read h m;((h==0&&m<21))

4

bash、40バイト:

read h m< <(date +%H\ %M);((h==0&&m<21))

3

JS(ES6)、52 50 49バイト

y=>(x=new Date).getUTCMinutes()<21&&!x.getUTCHours()

なぜDateそんなに長いのですか?過去の分を取得し、21未満の場合は00:00戻りtruefalseそれ以外の場合は戻ります。


new Date代わりに 使用して2バイト節約new Date()
シャギー

2
-1これは、日付をチェックしません
ASCIIのみ

@ASCIIのみの質問では、それは必要ないという。
Programmer5000

で別のバイトを保存しますy=>(x=new Date).getUTCMinutes()<21&&!x.getUTCHours()
シャギー

1
UTCの代わりに現地時間を使用して、さらに6バイトを節約します。質問では、現地時間 UTCであると仮定することができます。
ブリリアンド

3

APL(Dyalog)、14バイト

∧/1 20>2↑3↓⎕TS

∧/ それは本当ですか(ANDリダクション)

1 20> これらの数値は

2↑ の最初の2つの要素

3↓⎕TS 現在のT IME3つの要素が削除され Sスタンプ


何のキャラクターですか?
Programmer5000

@ programmer5000 (Quad)は、APLのシステム名のプレフィックスです。され、空の四角形になるはず。
アダム

3

、25バイト

‹﹪÷UPtime.time⟦⟧¹²⁰⁰¦⁷²¦¹

-真実のために印刷し、偽物のために何も印刷しません。

説明

    UPtime.time⟦⟧          Python function time.time()
   ÷               ¹²⁰⁰      Divided by 1200
 ﹪                    ¦⁷²   Modulo 72
‹                         ¦¹ Less than 1

オンラインでお試しください!


⟦⟧ここで何をしますか?リストまたは矢印リストリテラルが必要ですか?
エリックアウトゴルファー

うん、リストがここで必要ですが、今、私はそれについて考えることを私はそれをオプションにする必要があり
ASCIIのみの

ああ、それは引数のリストですか?ええ、デフォルトで引数なしで関数を呼び出して、オプションにする必要があります。
エリックアウトゴルファー

@EriktheOutgolferは完了
ASCIIのみ

3

アリス、17バイト

/o
\T@/4&;'-.C+n

オンラインでお試しください!

タイムゾーンがUTCに設定されているマシン(TIOサーバーなど)で実行されることを想定しています。

説明

Ordinalモードでは、IPはプログラムを介して斜めに上下に跳ね返ります。カーディナルモードでは、IPは他のほとんどのFungeoidのようにエッジをラップします。

/   Reflect to SE. Switch to Ordinal.
T   Push a string representing the current date and time, in the format:
    YYYY-MM-DDTHH:MM:SS.mmm±AA:BB
/   Reflect to E. Switch to Cardinal.
4&  Run the next command 4 times.
;   Discard four elements from the top of the stack. Since we're in Cardinal mode,
    this attempts to discard four integers. But the top stack value is a string so
    it gets implicitly converted to all the integers contained in the string. So
    year, month, day, hour, minute, seconds, milliseconds, timezone hour,
    timezone minute will be pushed separately. Then the last four of these
    will be discarded, so that we end up with the minute and the hour on
    top of the stack.
'  Push 21.
-   Subtract it from the minutes. Gives something negative for minutes 0 to 20.
.C  Compute the binomial coefficient n-choose-n. This gives 0 for negative
    results and 1 for non-negative ones. SE is down if both this value and
    the current hour are zero.
+   Add the two values. Iff they are both zero, we still get a zero.
n   Logical NOT of the value. Turns 0 into 1 and everything else into 0.
\   Reflect to NE. Switch to Ordinal.
o   Implicitly convert the result to a string and print it.
@   Terminate the program.

3

MATL、10バイト

いくつかの修正をしてくれたデニスに感謝

Z'1\480*7<

オンラインでお試しください!

説明

Z'    % Push current date and time as a float. Integer part is day, decimal part is time
1\    % Modulo 1. This gives the time, in units of one day
480*  % Multiply by 480
7<    % Less than 7? Note that 21 minutes / one day equals 7 / 480. Implicitly display. 

l72それ171はあなたの説明ではなくすべきですか?
デニス

@デニスはい、それをキャッチしてくれてありがとう!
ルイスメンドー

それはまだ7271です。また、この戻らないでしょう0では00:20
デニス

はい@Dennis、これが戻ってくる000:20はなく、戻ってくる100:20(のマシンイプシロンによって与えられる第二の小部分マイナスdoubleデータタイプ回86400)。挑戦は「あなたは最も近い分まで正確でなければならない」と言うので、私はそれが受け入れられることを理解しています
ルイス・メンドー

それはおそらくMother Metaに関する投稿が意味したことですが、この挑戦​​は00:20 -> trueテストケースとしてあります。質問にコメントを残しました。
デニス

3

Python 3(NON-REPL)+時間、81 77バイト

Bahromのおかげで-4バイト

import time;e=str(time.strftime('%H:%M'));print(e[:2]=='00'and int(e[3:])<21)

現在の日付を文字列に変換し、その文字を分析する単純なアプローチ。


別のフォーマット文字列を使用することで、大量のバイトを保存できます。シェルを使用している場合は、print関数は不要ですimport time;e=str(time.strftime('%H:%M'));e[:2]=='00'and int(e[2:])<21。これはおそらくさらにもっとゴルフすることができます。
バロム

(ゴルフとルールにはかなり新しい)が、シェルではこれも正しい結果を出力するようです:import time;time.localtime();_.tm_hour==0 and _.tm_min<21。とにかくASCIIのみに
勝つ

[OK]を、私は多分、後に、今編集することはできません
氏Xcoderに


2

Bash55 53 51 50バイト

@ robbie0630のコメントから-1バイト。

a=`date +%s`;echo $[1493856000<a&a<1493857200?1:0]

オンラインでお試しください!

このソリューションの利点は、任意の日付で機能することです(1エポック時間を使用するため、チャレンジで定義された期間のみ返されます)。


2
置き換えることにより、バイトを剃り落とす$(...)`...`
ロビー

1

Swift + Foundation、178バイト

import Foundation;var d=String(describing:Date());func g(_ s:Int)->String{return String(d[d.index(d.startIndex,offsetBy:s)])};print(g(11)+g(12)=="00" ?Int(g(14)+g(15))!<21:false)

迅速な基準でかなり短い。見てみな!

Pythonの答えのように、Dateboolを印刷したものに応じて、基本的には現在の文字列を文字列に変換し、その数字を分析しました。


1

R、65バイト

library(lubridate)
x=Sys.time()
print(all(!hour(x)&minute(x)<21))

時間== 0および分<21かどうかを確認します。


1

PostgreSQL、43文字

select now()between'170503'and'170503 0:20'

日付/時刻の計算にSQLを好むからです。

サンプル実行:

bash-4.3$ psql -c "select now()between'170503'and'170503 0:20'"
 ?column? 
----------
 f
(1 row)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.