SE何时会下跌?


13

SE将在今天 2017-05-04 00:00 UTC直到00:20 UTC 关闭/只读。

您的挑战是,如果SE为Down /只读状态,则输出真实值,而如果SE为非只读,则输出错误值。您可能没有任何输入,并且必须使用日期内置函数来确定SE是否为down /只读(实际上不查询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今天(5/3/17)的UTC 运行到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

请注意,允许使用任何真实或虚假的值,而不仅仅是truefalse。您必须精确到最接近的秒数,并且不能更改系统时钟!您可能会假设您的程序正在+0 UTC时区的计算机上运行。


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

8
我建议将测试用例更新为使用通用日期格式而不是美国日期格式。
毛茸茸的

12
步骤#1,触发漫游器军队到DDoS SE,步骤#2,返回“ 1”
user2023861

9
首先,作为SO SRE经理,我想说我喜欢这个问题。干得好!但是,我确实想提醒人们,该站点不会处于困难状态……仅处于只读模式。就是说,我将选择对此问题的答案,以帮助我确定何时启动该程序。
TomOnTime

3
那将意味着您自己的答案无效,不是吗?许多其他答案也会如此;您的原始版本或当前测试用例都没有提到秒。
丹尼斯,

Answers:



16

JavaScript(ES6),26 24 23 22 21字节

感谢Shaggy节省了3个字节,感谢Luke节省了1个字节。

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

检查当日经过的时间是否少于1200000ms(1200s或20min)。假设停机时间是20分钟而不是21分钟,这在链接的帖子中似乎是这种情况。00:20UTC是专属上限。


使用new Date代替节省2个字节new Date()
毛茸茸的

<2保存另一个字节。
毛茸茸的

1
您不需要+; /自动转换new DateNumber
路加福音

是否需要函数声明(_ =>)?JavaScript可以在全球范围内运行。
Brilliand

@Brilliand是的,否则将需要输出,最短的alert是要长得多的时间
仅使用ASCII

9

Python 2中41 39个字节

多亏了Erik the Outgolfer,节省了2个字节

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

在线尝试!

使用与我的JS和木炭答案相同的算法。


/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

需要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.

(所有人都被)丹尼斯推翻了!不错的工作!
程序员


如果停机时间是最新的“直到” 00:21,我可以节省一个字节...
丹尼斯


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:00true如果小于21,false则返回分钟,否则返回。


使用new Date代替 节省2个字节new Date()
毛茸茸的

2
-1,这不检查日期
仅使用ASCII

@ASCII-仅此问题说它不必。
程序员

使用保存另一个字节y=>(x=new Date).getUTCMinutes()<21&&!x.getUTCHours()
毛茸茸的

1
使用本地时间而不是UTC节省另外6个字节-这个问题说您可能假设本地时间 UTC。
Brilliand

3

APL(Dyalog),14个字节

∧/1 20>2↑3↓⎕TS

∧/ 这是真的吗?

1 20> 这些数字大于

2↑ 的前两个元素

3↓⎕TS 当前Ť IME š夯实带有三个元素下降


什么字符
程序员

@ programmer5000 (Quad)是APL中系统名称的前缀。它认为是一个空矩形。
阿达姆(Adám)'17

3

木炭,25字节

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

打印-真实,没有虚假。

说明

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

在线尝试!


⟦⟧这里做什么?您是否需要列表或箭头列表文字?
暴民埃里克(Erik the Outgolfer)'17年

是的,这里需要一个列表,但是现在我考虑了,我应该将其设为可选
(仅ASCII)

哦,这是参数列表?是的,您应该将其设置为可选,默认情况下调用不带参数的函数。
暴民埃里克(Erik the Outgolfer)'17年

@EriktheOutgolfer完成

3

爱丽丝,17个字节

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

在线尝试!

假设在时区设置为UTC的计算机上运行(例如TIO服务器)。

说明

在顺序模式下,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您的解释?
丹尼斯

@丹尼斯是的,谢谢你抓住了这个!
路易斯·门多

它仍然72VS 71。也不会这个返回000:20
丹尼斯,

@Dennis是的,这将返回000:20,但将返回100:20第二(由机器的ε-对于给定的减一小部分double数据类型倍86400)。挑战说“您必须精确到最近的分钟”,所以我知道这是可以接受的
Luis Mendo'May

Mother Meta上的帖子可能就是这个意思,但这是一个挑战00:20 -> true。对这个问题发表了评论。
丹尼斯,

3

Python 3(NON-REPL)+时间,81 77字节

-4字节感谢Bahrom

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

幼稚的方法,将当前日期转换为字符串并分析其字符。


您可以使用不同的格式字符串来保存一整堆字节,如果您使用的是Shell,则不需要print函数:import time;e=str(time.strftime('%H:%M'));e[:2]=='00'and int(e[2:])<21。这可能也可以打得更远。
巴林2016年

(这是打高尔夫球和规则的新手),但在外壳中这似乎也可以输出正确的结果:import time;time.localtime();_.tm_hour==0 and _.tm_min<21。无论如何我们都不会打败纯ASCII大声笑
Bahrom

好吧,我现在不能编辑,也许以后
Xcoder先生


2

Bash55 53 51 50字节

@ robbie0630的注释为-1个字节。

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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.