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내일 UTC (5/4/17)까지 실행될 것이라고 가정 할 수 있습니다 .

00:21 UTC 04 May 2017 -> false

00:20 UTC 04 May 2017 -> true

00:10 UTC 04 May 2017 -> true

어떤 truthy 또는 falsy 값이 아니라, 허가되는 것을주의 true하고 false. 가장 가까운 초 단위로 정확해야하며 시스템 시계를 변경하지 않아야합니다! +0 UTC시간대 의 머신에서 프로그램이 실행되고 있다고 가정 할 수 있습니다 .


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

8
미국보다는 일반적인 날짜 형식을 사용하도록 테스트 사례를 업데이트하는 것이 좋습니다.
Shaggy

12
1 단계, 봇 군대를 DDoS SE로 트리거, 2 단계, "1"반환
user2023861

9
먼저, SO SRE 관리자로서 저는이 질문을 좋아한다고 말하고 싶습니다. 잘 했어! 그러나 나는 사람들에게 사이트가 단단해지지는 않을 것입니다 ... 읽기 전용 모드로 생각 나게하고 싶습니다. 즉, 절차 시작시기를 결정하는 데 도움이되도록이 질문에 대한 답변을 선택하겠습니다.
TomOnTime

3
그것은 당신의 자신의 대답이 유효하지 않다는 것을 의미합니다. 다른 많은 대답들도 마찬가지입니다. 원래 수정본이나 현재 테스트 사례 모두 초를 언급하지 않았습니다.
Dennis

답변:



16

자바 스크립트 (ES6), 26 24 23 22 21 바이트

Shaggy 덕분에 3 바이트를 절약 하고 Luke 덕분에 1 바이트 를 절약했습니다 .

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

현재 날짜의 시간이 1200000ms (1200 초 또는 20 분) 미만인지 확인합니다. 다운 타임이 21이 아니라 20 분이라고 가정하면 링크 된 게시물에 해당되는 것처럼 보입니다. 00:20UTC독점 상한입니다.


new Date대신을 사용하여 2 바이트를 절약하십시오 new Date().
Shaggy

<2다른 바이트를 저장합니다.
Shaggy

1
당신은 필요하지 않습니다 +; /자동으로로 변환 new Date합니다 Number.
Luke

함수 선언 (_ =>)이 필요합니까? JavaScript는 전 세계적으로 실행될 수 있습니다.
Brilliand

@Brilliand 예, 그렇지 않으면 출력이 필요합니다. 가장 짧은 alert것이 훨씬 더 깁니다
ASCII 전용

9

파이썬 2 , 41 39 바이트

Outgolfer Erik 덕분에 2 바이트 절약

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

온라인으로 사용해보십시오!

내 JS 및 Charcoal 답변과 동일한 알고리즘을 사용합니다.


/72<1와 다른 가요 <72?
xnor

@xnor whoops 죄송 합니다만 잘못 복사하여 수정했습니다.
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바이트를 절약 할 수 있습니다.
Dennis


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이렇게 길어요? 그냥 과거 분 도착 00:00되돌아 true가 <21, 그리고 경우 false그렇지.


new Date대신을 사용하여 2 바이트를 절약하십시오 new Date().
Shaggy

2
-1 날짜를 확인하지 않음
ASCII 전용

@ASCII 전용 문제는 그럴 필요가 없다는 것입니다.
programmer5000

로 다른 바이트를 저장하십시오 y=>(x=new Date).getUTCMinutes()<21&&!x.getUTCHours().
Shaggy

1
UTC 대신 현지 시간을 사용하여 6 바이트를 더 절약하십시오. 질문은 현지 시간 UTC 라고 가정 할 수 있습니다 .
화려한

3

APL (Dyalog), 14 바이트

∧/1 20>2↑3↓⎕TS

∧/ 그것은 사실입니까 (그리고 감소)

1 20> 이 숫자는

2↑ 첫 두 요소

3↓⎕TS 현재 T의 IME는 S 세 요소는 삭제와 탐포


어떤 캐릭터입니까 ?
programmer5000

@ programmer5000 (Quad)은 APL의 시스템 이름 접두사입니다. 되어 하늘의 구형 있어야.
Adám

3

, 25 바이트

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

-진실을 위해 인쇄 하고 거짓을 위해 아무것도 인쇄 하지 않습니다.

설명

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

온라인으로 사용해보십시오!


은 무엇을 않습니다 ⟦⟧여기합니까? 목록 또는 화살표 목록 리터럴이 필요합니까?
아웃 골퍼 Erik

네, 목록이 여기에 필요하지만 지금은 그것에 대해 생각 나는 그것을 선택해야한다
ASCII 전용

아, 그래서 그것은 논쟁의 목록입니까? 예, 기본적으로 인수없이 함수를 호출하여 선택적으로 만들어야합니다.
Outgolfer Erik

@EriktheOutgolfer 완료
ASCII 전용

3

Alice , 17 바이트

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

온라인으로 사용해보십시오!

시간대가 TIO 서버와 같이 UTC로 설정된 머신에서 실행된다고 가정합니다.

설명

서수 모드에서는 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 바이트

몇 가지 수정에 대한 Dennis에게 감사

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?
Dennis

@Dennis 네, 그것을 잡아 주셔서 감사합니다!
Luis Mendo

여전히 72vs 71입니다. 또한이 반환하지 않을 0시를 00:20?
Dennis

예 @Dennis,이 반환 000:20있지만, 반환 100:20(대한 기계 엡실론에 의해 주어진 두 번째의 작은 부분을 뺀 double데이터 유형 시간 86400). 도전은 "가장 가까운 순간까지 정확해야한다"고 말합니다. 저는 그것이 받아 들일 수 있음을 이해합니다
Luis Mendo

그것은 아마도 Mother Meta에 대한 게시물의 의미 일지 모르지만 도전은 00:20 -> true테스트 사례입니다. 질문에 대한 의견을 남겼습니다.
Dennis

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. 이것은 아마도 더 골프를 칠 수 있습니다.
Bahrom

(골프와 규칙에 익숙하지 않은) 쉘에서 이것은 올바른 결과를 출력하는 것으로 보입니다 import time;time.localtime();_.tm_hour==0 and _.tm_min<21. 우리는 어쨌든 ASCII만을 치고 있지 않습니다 lol
Bahrom

좋아, 난 지금, 나중에 편집 할 수 없습니다
Mr. Xcoder


2

배쉬 , 55 53 51 50 바이트

@ robbie0630의 의견에서 -1 바이트.

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

온라인으로 사용해보십시오!

이 솔루션의 장점은 모든 날짜에 작동한다는 것입니다 ( 1에포크 시간을 사용하므로 챌린지에 정의 된 기간 동안 만 반환 됩니다).


2
대체하여 바이트를 면도 $(...)`...`
로비

1

스위프트 + 파운데이션, 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)

신속한 표준에 의해 상당히 짧습니다. 확인 해봐!

내 파이썬 답변에서와 같이 기본적으로 전류 Date를 문자열 로 변환 하고 부울을 인쇄 한 것에 따라 숫자를 분석했습니다.


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.