เมื่อไหร่ที่ 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

นั่นเป็นพฤติกรรมที่ไม่ได้กำหนดเพราะมันอยู่หลังหน้าต่างเวลาเกินไป เพื่อให้ชัดเจนคุณสามารถสมมติว่าโปรแกรมของคุณจะถูกเรียกใช้จาก UTC 8:00วันนี้ (5/3/17) ถึง UTC 1:00ในวันพรุ่งนี้ (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 ทริกกองทัพ bot ไปยัง DDoS SE ขั้นตอน # 2 คืนค่า "1"
user2023861

9
ก่อนอื่นในฐานะผู้จัดการ SRE ฉันต้องการพูดว่าฉันรักคำถามนี้ การทำงานที่ดี! อย่างไรก็ตามฉันต้องการเตือนผู้คนว่าเว็บไซต์จะไม่ยาก ... เพียงแค่ในโหมดอ่านอย่างเดียว ที่กล่าวว่าฉันจะเลือกคำตอบสำหรับคำถามนี้เพื่อช่วยในการพิจารณาว่าจะเริ่มขั้นตอนเมื่อใด
TomOnTime

3
นั่นหมายความว่าคำตอบของคุณไม่ถูกต้องใช่ไหม ดังนั้นคำตอบอื่น ๆ อีกมากมายจะ; ทั้งฉบับแก้ไขต้นฉบับและกรณีทดสอบปัจจุบันของคุณพูดถึงวินาที
เดนนิส

คำตอบ:



16

JavaScript (ES6), 26 24 23 22 21 ไบต์

ที่บันทึกไว้ 3 ไบต์ขอบคุณที่มีขนดกและ 1 ไบต์ขอบคุณที่ให้ลุค

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

ตรวจสอบว่าเวลาที่ผ่านไปในวันปัจจุบันน้อยกว่า 1200000ms (1200 วินาทีหรือ 20 นาที) ถือว่าการหยุดทำงานเป็น 20 นาทีไม่ใช่ 21 ซึ่งดูเหมือนจะเป็นกรณีในโพสต์ที่เชื่อมโยง 00:20UTCเป็นขอบเขตบนสุดพิเศษ


บันทึก 2 ไบต์โดยใช้แทนnew Date new Date()
Shaggy

<2เพื่อบันทึกไบต์อื่น
Shaggy

1
คุณไม่ต้องการ+; /จะแปลงไปnew Date Number
ลุ

จำเป็นต้องประกาศฟังก์ชัน (_ =>) หรือไม่ JavaScript สามารถเรียกใช้ทั่วโลก
Brilliand

@ Brilliand ใช่มิฉะนั้นจะต้องใช้เอาท์พุตสิ่งที่สั้นที่สุดalertซึ่งยาวกว่า
ASCII- เท่านั้น

9

Python 2 , 41 39 ไบต์

บันทึก 2 ไบต์ด้วยErik the Outgolfer

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

ลองออนไลน์!

ใช้อัลกอริทึมเดียวกันกับคำตอบ JS และ Charcoal ของฉัน


คือ/72<1แตกต่างจาก<72?
xnor

@xnor ขออภัยขออภัยคัดลอกผิดแก้ไขตอนนี้
เท่านั้น

ไม่ฉันหมายความว่าฉันคิดว่าprint time.time()/1200<72จะเป็นวิธีที่สั้นกว่าในการแสดงสิ่งเดียวกัน
xnor

@xnor ฉันค่อนข้างแน่ใจว่าจะทำงานเฉพาะในวันแรกของยุคแม้ว่า
ASCII เท่านั้น

โอ๊ะฉันหมาย->%1200/72<1 %1200<72TIO ของคุณเชื่อมโยงกับ%1200/72<1เวอร์ชัน - นั่นเป็นข้อผิดพลาดหรือไม่?
xnor

7

เยลลี่ขนาด 9 ไบต์

6ŒT|0Ḍ<21

จำเป็นต้องTZตั้งค่าเป็นUTCซึ่งเป็นกรณีของ TIO

ลองออนไลน์!

มันทำงานอย่างไร

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


ถ้าหยุดทำงานล่าสุด 'til 00:21ผมสามารถประหยัดไบต์ ...
เดนนิส




3

JS (ES6), 52 50 49 ไบต์

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

ทำไมDateนานจัง เพิ่งได้รับนาทีที่ผ่านมา00:00และกลับมาtrueหากพวกเขา <21 และfalseอื่น ๆ


บันทึก 2 ไบต์โดยใช้แทนnew Date new Date()
Shaggy

2
-1 สิ่งนี้ไม่ได้ตรวจสอบวันที่
เฉพาะ ASCII

@ ASCII เพียงคำถามที่บอกว่าไม่ต้องทำ
programmer5000

y=>(x=new Date).getUTCMinutes()<21&&!x.getUTCHours()บันทึกไบต์อีกด้วย
Shaggy

1
บันทึกอีก 6 ไบต์โดยใช้เวลาท้องถิ่นแทน UTC - คำถามบอกว่าคุณอาจสมมติว่าเวลาท้องถิ่นเป็น UTC
Brilliand

3

APL (Dyalog) ขนาด 14 ไบต์

∧/1 20>2↑3↓⎕TS

∧/ มันคือความจริงทั้งหมด (และการลดลง) ที่

1 20> ตัวเลขเหล่านี้มากกว่า

2↑ สององค์ประกอบแรกของ

3↓⎕TS ปัจจุบันT IME S TAMP กับสามองค์ประกอบลดลง


ตัวละครคืออะไร?
programmer5000

@ programmer5000 (Quad) เป็นส่วนนำหน้าสำหรับชื่อระบบใน APL มันเป็นที่ควรจะเป็นรูปสี่เหลี่ยมผืนผ้าที่ว่างเปล่า
2560

3

ถ่าน 25 ไบต์

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

พิมพ์-เพื่อความจริงไม่มีอะไรที่ผิดพลาด

คำอธิบาย

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

ลองออนไลน์!


อะไร⟦⟧ทำที่นี่? คุณต้องการรายการหรือรายการลูกศรตามตัวอักษร?
Erik the Outgolfer

ใช่รายการที่ต้องการที่นี่ แต่ตอนนี้ฉันคิดว่าฉันควรทำให้มันเป็นตัวเลือก
ASCII- เท่านั้น

โอ้มันเป็นรายการของการขัดแย้ง? ใช่คุณควรกำหนดให้เป็นทางเลือกเรียกใช้ฟังก์ชันโดยไม่มีข้อโต้แย้งตามค่าเริ่มต้น
Erik the Outgolfer

@EriktheOutgolfer Done
ASCII เท่านั้น

3

อลิซ 17 ไบต์

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

ลองออนไลน์!

สมมติว่ารันบนเครื่องที่ตั้งค่าเขตเวลาเป็น UTC (เช่นเซิร์ฟเวอร์ TIO)

คำอธิบาย

ในขณะที่อยู่ในโหมด Ordinal IP จะกระดอนขึ้นและลงในแนวทแยงมุมผ่านโปรแกรม ขณะที่อยู่ในโหมด Cardinal IP จะล้อมรอบขอบเหมือน Fungeoids อื่น ๆ ส่วนใหญ่

/   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คำอธิบายของคุณ?
Dennis

@Dennis ใช่ขอบคุณสำหรับการจับ!
Luis Mendo

ก็ยังคงเทียบ72 71นอกจากนี้ยังจะไม่กลับมานี้0ที่00:20?
Dennis

@Dennis ใช่สิ่งนี้จะกลับมา0ที่00:20แต่จะกลับมา1ที่00:20ลบด้วยเศษเสี้ยวของวินาที (โดย epsilon ของเครื่องสำหรับdoubleชนิดข้อมูลครั้ง86400) ความท้าทายกล่าวว่า "คุณต้องแม่นยำในนาทีที่ใกล้ที่สุด" ดังนั้นฉันจึงเข้าใจว่าเป็นที่ยอมรับ
Luis Mendo

นั่นอาจเป็นสิ่งที่โพสต์ใน Mother Meta มีความหมาย แต่ความท้าทายนั้น00:20 -> trueเป็นกรณีทดสอบ ทิ้งความคิดเห็นไว้ในคำถาม
Dennis

3

Python 3 (ไม่ใช่ REPL) + เวลา81 77 ไบต์

-4 ไบต์ขอบคุณ Bahrom

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

วิธีการไร้เดียงสาเปลี่ยนวันที่ปัจจุบันเป็นสตริงและวิเคราะห์ตัวละคร


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 เท่านั้นฮ่า ๆ ๆ
Bahrom

ตกลงฉันไม่สามารถแก้ไขได้ในภายหลังอาจจะภายหลัง
Mr. Xcoder


2

Bash , 55 53 51 50 ไบต์

-1 ไบต์จากความคิดเห็นของ @ robbie0630

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

ลองออนไลน์!

ข้อได้เปรียบของการแก้ปัญหานี้คือมันทำงานได้ทุกวัน (ดังนั้นจะกลับมา1เฉพาะช่วงเวลาที่กำหนดไว้ในการท้าทายเพราะมันใช้เวลาช่วงเวลา)


2
โกนไบต์ด้วยการแทนที่$(...)ด้วย`...`
robbie

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 ฉันจะแปลงกระแสไฟฟ้า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.