시간 여행 감지


51

자동차, 기차, 스케이트 보드, 심지어 원자로까지 컴퓨터가 오늘날 어디에나 있습니다. 시간 여행 기기에서 소프트웨어를 실행할 가능성은 시간 문제 일뿐입니다. 당신은 그것을 다룰 수 있습니까? 최소한 감지 할 수 있습니까?

당신의 작업 :

  1. 시간 여행을 감지하기 위해 루프하고 시스템 시간을 계속 쿼리하는 프로그램을 작성하십시오.
  2. 두 개의 연속 쿼리간에 하루 이상 시간이 이동하면 시간이 이동합니다. 이 경우 프로그램은 다음을 인쇄해야합니다.
    TS TS: YYYY? You mean we're in the future?
  3. 두 연속 쿼리 사이에서 시간이 얼마든지 뒤로 이동하면 뒤로 이동합니다. 이 경우 프로그램은 다음을 인쇄해야합니다.
    TS TS: Back in good old YYYY.
  4. TS TS시간 여행 전후의 타임 스탬프입니다. YYYY목적지 연도입니다.
  5. 타임 스탬프는 최소 4 자리 연도, 월, 일,시, 분 및 초를 포함하는 임의의 형식 일 수 있으며 비 숫자로 구분됩니다.

한계 :

  1. 적어도 19, 20, 21 세기의 날짜를 지원해야합니다.
  2. 이 챌린지가 게시되기 전에 존재했던 언어를 사용해야합니다.
  3. 이 챌린지가 게시 된 후에 만 ​​답변을 게시해야합니다.
  4. 답변을 게시하기 전에 존재했던 언어를 사용해야합니다.
  5. 답변을 게시 한 후에 만 ​​답변을 편집 할 수 있습니다.
  6. 프로그램은 필요한 출력 이외의 출력을 인쇄해서는 안됩니다. 가끔 "그레이트 스캇!" 허용됩니다.

이것은 코드 골프입니다. 가장 짧은 답변이 이깁니다.
관련 영화 참조는 아마도 답변을 너무 길게 만들지 만 투표에 실패 할 수 있습니다.



4
# 5에 대해 좀 더 구체적으로 설명해 주시겠습니까?
Mego

4
비 숫자로 분리? 우우. YYYYMMDDHHmmSS는 내가 가장 좋아하는 타임 스탬프 형식입니다.
Sparr

3
@Aequitas 어떻게 아십니까? 어쩌면 시스템 시계는 실제로 불변이고 "설정"시간이 실제로 이동하는 것입니다
Rune FS

5
제한 2,3,4,5는 정말 가혹합니다. 내가 그것을 다룰 수 있는지 모르겠습니다.
슈 르트

답변:


4

CJam, 118 바이트

et:Tes{es_@-[TS*Set:TS*':S]\_864e5<{[1$et0="? You mean we're in the future?"N]o}|0<{[_"Back in good old "et0='.N]o}&}g

온라인 통역사에서는 작동하지 않습니다.

컴퓨터 시간을 두 번 조정 한 후의 샘플 출력 :

2015 10 21 11 2 45 1 3 -10800000 2015 10 23 11 2 45 0 5 -10800000: 2015? You mean we're in the future?
2015 10 23 11 2 53 448 5 -10800000 2015 10 21 11 2 52 0 3 -10800000: Back in good old 2015.

1
온라인 통역사와 함께 작동하지 않는 이유는 무엇입니까?
ugoren

1
이것은 무한 루프이므로 온라인 인터프리터는 프로그램이 완료된 후에 만 ​​출력을 표시합니다.
Dennis

1
그렇다면 어떻게 작동하는지 테스트합니까?
ugoren


9

파이썬 2, 210 바이트

from datetime import*
o=0
while 1:n=datetime.now();o=o or n;print"%s;%s: %s? You mean we're in the future?"%(o,n,n.year)if(n-o).days>=1else"%s;%s: Back in good old %s."%(n,o,n.year)if(n<o)else"Great Scott!";o=n

타임 스탬프는 YYYY-MM-DD HH:MM:SS세미콜론으로 구분 된 형식으로 인쇄됩니다 . 인쇄하기에는 2 문자가 더 짧기 때문에 3에서 Python 2로 전환되었습니다. 스팸 메일이와 함께 표준 출력 Great Scott!에 대한 normies 는 이상이 조건부 인쇄를 설정하는 것이 어떻게 쉽고 저렴하기 때문에, 비 시간 여행.


시간이 입력으로 예상됩니까? 이것은 묻는 것이 아닙니다 (아마 모호한 것입니다). 또한 시간이 잘되면 빈 줄을 인쇄하는 것 같습니다.
ugoren

나는 사용자가 아닌 OS를 요구했다. 나는 명확히 할 것이다.
ugoren

8

자바 스크립트 (ES6), 263 바이트

n=Date;o=n.now();(function g(){k=new n;j=new n(o);s=`${k} ${o} `;if(n.now()-o>86400)console.log(`${s}${k.getFullYear()}? You mean we're in the future?`);if(o-n.now()>84600){console.log(`${s}Back in good old ${k.getFullYear()}.`);}o=n.now();setTimeout(g,100);}());

이것은 아마도 더 효율적이고 작게 만들기 위해 다시 작성하는 것과 관련이 있습니다.

출처:

n=Date;
o=n.now();

(function go() {
   k=new n;
   j=new n(o);
   s=`${k} ${o} `;
   if (n.now() - o > 86400) {
      console.log(`${s}${k.getFullYear()}? You mean we're in the future?`);
   }
   if (o - n.now() > 84600) {
      console.log(`${s}Back in good old ${k.getFullYear()}.`);
   }
   o=n.now()
   setTimeout(go,100);
}());

1
후진 여행은 하루가 아닌 금액만큼 뒤로 이동하는 것으로 정의됩니다. 또한 여러 now()통화 로 인해 여행 이벤트가 누락 될 수 있습니다.
ugoren

골퍼 시도 : n = Date, o = n.now (); setInterval ( "d = new n, s = d +`$ {new n (o)}`; f = d.getFullYear (); if ( n.now ()-o> 8.64e + 7) console.log (s + f +`? 우리가 미래에 있다는 것을 의미합니까?`); if (o> n.now ()) console.log (s +` 예전의 $ {f} .`); o = n.now () ", 100);
Stefnotch

나는 당신이 첫 번째 부분을 골프 수 있다고 생각합니다 o=(n=Date).now().
Conor O'Brien

+ Stefnotch 8.64e+7가 2 자보다 깁니다 86400.
Florrie

1
@ ChoongHanO'Bʀɪᴇɴ 죄송합니다! 왜 작동하지 않는지 궁금했습니다.
Florrie

5

파이썬 3, 195

from datetime import*
n=datetime.now
p=n()
while 1:
 c=n();f=(p,c,p.year);s=(0,("%s %s: %s? You mean we're in the future?"%f,"%s %s: Back in good old %s."%f)[p.day>c.day])[p>c];p=c
 if s:print(s)

가끔씩 만 만드는 좋은 방법을 찾을 수 없기 때문에 현재 Great Scott을 인쇄하지 않습니다.


5

배쉬 + 코어 유틸리티, 177

d()(date -d@"$@")
for((b=`date +%s`;a=`date +%s`;b=a)){
t=`d $a`\ `d $b`
((a<b))&&d $b "+$t: Back in good old %Y."
((a>b+86400))&&d $b "+$t: %Y? You mean we're in the future?"
}

3

루비, 194 바이트

아직 크기를 줄일 시간이 없었습니다. 거기에 몇 가지 최적화가 숨겨져 있다고 확신합니다.

require 'time';t=nil;while 1;n=Time.now;if t;s="#{t} #{n}: ";y=n.year;puts t>n ? "#{s}Back in good old #{y}" : (n>t+86400 ? "#{s}#{y}? You mean we're in the future?": "Great Scott!");end;t=n;end

풀리지 않은 (그리고 훨씬 더 읽기 쉬운) :

require 'time'
t=nil
while 1
  n=Time.now
  if t                                             # on second or later pass
    s="#{t} #{n}: "                                # prepare the timestamp
    y=n.year
    puts t>n ?                                     # if we go back
      "#{s}Back in good old #{y}" :                # timestamp + phrase
      (n>t+86400 ?                                 # else, more than one day forward
        "#{s}#{y}? You mean we're in the future?": # timestamp + future
        "Great Scott!")                            # Great Scott!
  end
  t=n                                              # set a new jump point
end

편집 : 인간이 아닌 OS에 시간을 요구하도록 수정되었습니다.


2
몇 가지 권장 사항 : loop{}대신을 사용 while 1...end하고 +보간 대신 문자열 연결을 사용해보십시오 .
voikya

3

루아 5.3, 174 바이트

T=os.time P=print l=T()::a::t=T()b=l.." "..t..": "y=os.date('%Y',t)_=t<l and
P(b.."Back in good old "..y)or t>l+86399 and
P(b..y.."? You mean we're in the future?")l=t goto a

이것은 "타임 스탬프가 모든 형식 일 수 있습니다"규칙에서 엄청나게 재생됩니다. "1970 년 1 월 1 일 이후의 초"형식을 자유롭게 사용할 수있었습니다


. MeepDarknessMeep의 구조 Meep, 나는 이것을 (비논리적으로) 짜낼 수 있습니다 ...

155 바이트

T=os.time::G::l=t or T()t=T()_=(t>l+86399or t<l)and
print(l.." "..t..": "..os.date(t<l
and"Back in good old %Y"or"%Y? You mean we're in the future?"))goto G

3
Timestamps may be in any format, that includes at least the 4-digit year, month, day, hour, minute and second, separated by non-digits.-에포크 이후 몇 초를 허용하지 않습니다.
Mego

4
그것이 어떤 형식을 "제외"하지 않은 좋은 일이
thenumbernine

@ugoren 정말로 그 요구 사항은 당신의 의도와 관련하여 더 구체적이어야합니다
Mego

나는 루아에 익숙하지 않아서 틀렸을 수도 있지만,이 프린트처럼 보이지만 Back in good ol YYYY프린트해야합니다 Back in good old YYYY. (오래된 d에 주목)
Pokechu22

아니 좋은 캐치, 내가 할 수있는 곳마다 바이트를 면도하려고했습니다 : -p
thenumbernine

2

루아 5.3 179 178 173 171 169 168 163 바이트

q="%Y %c: "c=os.date::a::d=f f=os.time()_=d and(f-d>86399or f<d)and print(c(q,d)..c(q..(f<d and"Back in good old %Y."or"%Y? You mean we're in the future?")))goto a

참고 사항 : 전체 년 수가 필요하면 6 바이트를 빼십시오. 그 이유는 루아 (또는 Windows 또는 다른 사람의 %)가 1 년 전체를 출력하지 않기 때문입니다. 이 때문에 타임 스탬프가 이상하게 보일 수 있습니다!

또한 숫자가 아닌 문자로 타임 스탬프를 분리 할 수 ​​있다는 이점도 있습니다!

내 이전 math.abs 참조 및 기타 개선 사항 @thenumbernine을 알려 주셔서 감사합니다 :)

루아 5.3, 151 바이트

이것은 실제 날짜 대신 타임 스탬프를 표시하여 @thenumbernine의 시간 표시 방법에서 '복사'입니다. 약간의 속임수라고 생각하기 때문에 경쟁이 아닙니다. 내 작품을 표시하기 위해 여기에 게시하면됩니다. :)

::a::d=f f=os.time()_=d and(f-d>86399or f<d)and print(d.." "..f..os.date(f<d and": Back in good old %Y."or": %Y? You mean we're in the future?"))goto a

1
우리는 거의 동시에 Lua 답변을 게시했습니다. 그것은 시간 여행에 대해 말해야합니다.
thenumbernine

아아, 감사합니다 @thenumbernine! 나는 마지막으로 의견을 내 능력 :) 있어요
MeepDarknessMeep

2

C : 363 바이트

이 편리한 스크립트를 사용하여 축소되었습니다 .

#include<stdio.h>
#include<time.h>
void p(time_t*t){char b[64];strftime(b,64,"%FT%T",localtime(t));printf("%s ",b);}int main(void){time_t a,b,d=60*60*24;int y;time(&a);while(1){time(&b);y=localtime(&b)->tm_year+1900;if(b<a){p(&a);p(&b);printf("Back in good old %d\n",y);}else if(b>a+d){p(&a);p(&b);printf("%d? You mean we're in the future?\n",y);}a=b;sleep(1);}}

기발한:

#include <stdio.h>
#include <time.h>

void p(time_t * t) {
  char b[64];
  strftime(b, 64, "%FT%T", localtime(t));
  printf("%s ", b);
}

int main(void) {
  time_t a, b, d = 60*60*24;
  int y;

  time(&a);
  while(1) {
    time(&b);
    y = localtime(&b)->tm_year+1900;
    if (b < a) {
      p(&a); p(&b); printf("Back in good old %d\n", y);

    } else if (b > a + d) {
      p(&a); p(&b); printf("%d? You mean we're in the future?\n", y);
    }
    a = b;
    sleep(1);
  }
}

예제 실행 :

2015-10-23T23:30:03 1985-06-14T16:27:00 Back in good old 1985   
1985-06-14T16:27:07 1999-02-09T14:15:00 1999? You mean we're in the future?
1999-02-09T14:15:09 2015-02-09T14:15:00 2015? You mean we're in the future?
2015-02-09T14:15:36 2015-10-21T07:28:00 2015? You mean we're in the future?
2015-10-21T07:29:06 1985-10-26T09:00:00 Back in good old 1985
1985-10-26T09:00:28 2055-11-12T06:38:00 2055? You mean we're in the future?
2055-11-12T06:38:12 1919-10-07T00:09:57 Back in good old 1919
1919-10-07T00:09:57 2055-11-12T06:38:14 2055? You mean we're in the future?  # tried to go to 1955 - fail.
2055-11-12T06:39:09 2015-10-23T23:32:03 Back in good old 2015  # auto-time back to 2015 because my laptop didn't like the jump to 2055!

나는 sleep추측 을 제거하여 10 바이트를 제거 할 수 있습니다.

그건 그렇고, Mac / Linux의 경우 시간이 많이 걸리는 편리함 :

sudo date 1026090085  # Sat 26 Oct 1985 09:00:00
sudo date 1021072815  # Wed 21 Oct 2015 07:28:00
sudo date 1112063855  # Intended to be 1955 but is 2055. Don't use!

를 떨어 뜨리십시오 sleep.
ugoren

2

자바 스크립트 (ES6) 181 174 170 바이트

for(a=Date;c=b||a.now(),b=d();e=new a(b).getFullYear(),f=`${a(c)} ${a(b):`})b>c+864e5?(g=alert)`${f} ${e}? You mean we're in the future?`:c>b&&g`${f} Back in good old `+e

참고 : 실시간 기계로는 테스트되지 않았습니다.

이 코드는 Firefox, Chrome, Edge, Node.js Harmony (또는 해당 문제의 경우 io.js )에서 실행됩니다. 하지만, 내가 사용하는 alert, 즉 대체되어야 할 것이다 있도록 console.log하기위한 노드이오 Suport : (187 바이트)

for(a=Date,b=0;c=b||(d=a.now)(),b=d();e=new a(b).getFullYear(),f=`${a(c)} ${a(b):`})b>c+864e5?(g=console.log)`${f} ${e}? You mean we're in the future?`:c>b&&g`${f} Back in good old ${e}.`

설명 :

// Using for like a while loop, defining relevant variables:
  for (a = Date, b = 0;
// Defing b and c: c becomes b, b becomes now. Also defining a shorthand for Date.now:                                
  c = b || a.now(),
  b = d();
// Defining Variables Relevant to this loop: e is the year according to b, f is the "TS TS:" string:                        
  e = new a(b).getFullYear(),
  f = `${a(c)} ${a(b):`
  )
// If b is greater than c plus a day (in milliseconds):
  b > c + 864e5 ?
  // Alert Time Forwand String: 
    (g = alert)
    `${f} ${e}? You mean we're in the future?`:
// else if c is greater than b:
  c > b &&
  // Alert Time Back String: 
    g `${f} Back in good old `+e

나는 더 짧은 것을 쓸 수 있었다. 또한, 나는 그것이 훌륭하다고 생각합니다!
Stefnotch

귀하의 솔루션이 얼마나 큰지, 내가 이길 수 있는지 알고 싶습니다. ;)
MayorMonty

아래로 스크롤하거나 링크를 클릭하십시오. : D
Stefnotch

2

파이썬 170 165 바이트

from datetime import*
n=datetime.now
c=n()
while 1:
 p=c;c=n()
 if(c-p).days:print p,"%s:"%c,["%s? You mean we're in the future?","Back in good old %s."][c<p]%c.year

이것은 Morgan Thrapp의 답변에 많은 빚을지고 있습니다. 여기서 주요 요령은 timedelta 정규화로, 과거를 향해 약간 이동할 때 timedelta.days를 음수로 만들고, 하루보다 미래로 이동할 때는 0을 만듭니다.


접두사 import*가 필요하지 않은 후 datetime..
ugoren

@ugoren : 대신 import*쓸 수 있습니다 . 어떤 식 으로든 말이 되네요 ...datetime.now()datetime.datetime.now()
han

혼란스럽게도 그렇게합니다.
ugoren

1

Caché ObjectScript, 199 바이트

l s k=86400 f  s e=+$H,t=$P($H,",",2) s:'d d=e,s=t s z=$ZDT(h)_" "_$ZDT($H)_": ",y=h\365+1841 w:e>d !,z,y,"? You mean we're in the future?" w:(k*t+e)<(k*s+d) !,z,"Back in good old ",y s h=$H,d=e,s=t

ANSI MUMPS에는 날짜를 사람이 읽을 수있는 타임 스탬프로 형식화 하는 $ZD[ATE]T[IME]고유 한 기능 이 없기 때문에이 문제는 일반 오래된 MUMPS에서 해결할 수 있지만 ANSI MUMPS에는 본질적으로기능 이 없습니다 .

이들의 경계 때문에이 프로그램은 아마 후 12월 31일 9999 전에 1841년 1월 1일로 시간 여행도 시간 여행을 감지하지 않습니다 고유의 계시가 . 이 프로그램은 또한 2 차 수준의 정밀도 만 가지고 있습니다. 1 초 미만의 하위 시간 결함은 통지에서 벗어날 수 있습니다.$H[OROLOG]


1

TSQL, 355 바이트

직장에서 멋진 멋진 언어가 SQL Server 프로덕션 서버에 붙어 있지 않습니다 =)

골프 버전

declare @a datetime=getdate(),@b datetime,@d float,@ char(99),@y char(4)while 0=0begin select @b=getdate(),@d=cast(@b as float)-cast(@a as float),@y=' '+DATEPART(y,@b),@=cast(@a as char(20))+' '+cast(@a as char(20))+': 'if @d>=1set @=@+@y+'? You mean we''re in the future?'if @d<0set @=@+'Back in good old '+@y+'.'print @ set @a=@b end

사소한 변경으로 더 읽기 쉬운 버전.

declare @t0 datetime = getdate(), @t1 datetime, @d float, @m varchar(99), @y char(4)

while 0=0
begin

    set @t1 = getdate()
    set @d = cast(@t1 as float) - cast(@t0 as float)
    set @y = ' ' + DATEPART(yy, @t1)
    set @m = cast(@t0 as varchar(30)) + ' ' + cast(@t0 as varchar(30)) + ': '

    if @d >= 1 set @m = @m + @y + '? You mean we''re in the future?'
    if @d < 0 set @m = @m +  'Back in good old ' + @y + '.'

    print @m

    set @t0 = @t1
end

SQL은 첫 번째 클래스 데이터 형식이므로 타임 스탬프와 관련하여 나쁘지 않습니다.

골프를 위해서 우리는 3 밀리 초 정밀도의 타입을 사용하고 있습니다. 루프 자체는 (서버에 따라) 반복하는 데 걸리는 시간이 줄어 듭니다. 여기서 핵심은 타임 스탬프가 부동 소수점이며 정수 유형은 몇 일이 지 났는지 계산하는 것입니다. 1753 년 1 월 1 일부터 9999 년 12 월 31 일까지 유효하지 않습니다.


1

VBA, 258 바이트

다음으로 실행 : Windows 7의 Excel 2007

유용성이 필요한 경우 305 바이트

경고 단일 스레드 단일 코어 컴퓨터 (1985 년에 발견되었을 가능성이 높음)에있을 경우 CPU 및 크래시 Excel / Windows가 최대화 될 수 있습니다

Sub q()
h=CDbl(Now())
While 1
t=CDbl(Now())
If t>h+1 Then Debug.Print (CDate(t) & " " & CDate(h) & ":" & Year(t) & "? You mean we're in the future?")
If t<h Then Debug.Print (CDate(t) & " " & CDate(h) & ": Back in good old " & Year(t) & ".")
h=t
Wend
End Sub

이 코드는 다음 추가 "시험 가능한"싶은 경우에 Application.Wait (Now() + TimeValue("0:00:01"))h=t

산출

10/22/2015 3:04:45 PM 10/22/2015 3:04:43 PM:2015?You mean we're in the future?
10/22/2015 3:06:48 PM 10/22/2015 3:06:46 PM: Back in good old 2015.

아래는 내가 사용한 테스트 파일입니다. 나는 Windows가 때때로 가지고있는 보안이 거의 없다는 것에 정직하게 놀랐습니다. 모든 컴퓨터에서 예상대로 실행되지 않을 수 있음

자신의 위험에서 실행하면 주요 부작용이 발생할 수 있습니다 !!!!
Sub DOC() t = 31346.6868055556 Date = DateSerial(Year(t), Month(t), Day(t)) Time = TimeSerial(Hour(t), Minute(t), Second(t)) q End Sub


1

자바 스크립트 173169162 바이트

자바 스크립트는 꽤 인기가 있습니다 ...

for(e=Date,n=e.now;o=n(a=alert);)d=new e,f=d.getFullYear(n(o>n(s=d+` ${e(o)}:`)&&a(s+`Back in good old ${f}.`))-o>864e5&&a(s+f+`? You mean we're in the future?`))

설명 (이전 버전의 코드) :

for(e=Date,n=e.now,a=alert,o=n();;o=n()) //Set up the variables and update o, the previous time

d=new e,s=d+` ${e(o)} `,f=d.getFullYear(), //d is the date, s is a string with the 2 timestamps, f is the year
n()-o>8.64e7&&a(s+f+`? You mean we're in the future?`), //Future check
o>n()&&a(s+`Back in good old ${f}.`) //Past check

0

처리, 270 바이트

int p;long x=System.currentTimeMillis();void draw(){int q=millis(),y=year();if(q<p){t(p);print("Back in good old "+y+".");}if(q>p+86400000){t(p);print(y+"? You mean we're in the future?");}p=q;}void t(int m){print(new java.util.Date(x+m)+" "+new java.util.Date()+": ");}

넓히는:

int p;
long x=System.currentTimeMillis();
void draw() {
  int q=millis(), y=year();
  if (q<p) {
    t(p);
    print("Back in good old "+y+".");
  }
  if (q>p+86400000) {
    t(p);
    print(y+"? You mean we're in the future?");
  }
  p=q;
}
void t(int m) {
  print(new java.util.Date(x+m)+" "+new java.util.Date()+": ");
}

샘플 출력 :

Wed Oct 21 13:21:59 EDT 2015 Mon Oct 19 13:21:59 EDT 2015: Back in good old 2015.
Mon Oct 19 13:22:08 EDT 2015 Wed Oct 21 13:22:08 EDT 2015: 2015? You mean we're in the future

0

루비 160 157 155 154 바이트

골프를 치기위한 많은 것들

a=Time.new;loop{b,s,y=Time.new,"#{a} #{b}: ",b.year;$><<(a>b ? s+"Back in good old #{y}.\n":b>a+86400 ? s+"#{y}? You mean we're in the future?\n":"");a=b}

0

수학, 295 바이트

이 프로그램은 매 초마다 OS에 새로운 TS를 요청합니다.

f:=LocalTime[]
p=Print;
y:=DateString[#,"Year"]&
s:=ToString[#]<>" "&
d:=QuantityMagnitude@DateDifference[a,b]
j=StringJoin;
While[True,
  a=b;
  b=f;
  Pause@1;
  Which[d>=0,
   p@(j@@{s@a,s@b,": ",y@b, 
       "? You mean we are in the future?"}),
   d<0,
   p@(j@@{s@a,s@b," Back in good old ",y@b,"."})]];

산출

날짜 / 시간을 수동으로 공급하여 테스트했습니다.

DateObject[{2015, 10, 23}, TimeObject[{18, 36, 17.9618}], TimeZone -> \
-4.] DateObject[{2015, 10, 25}, TimeObject[{18, 42, 0.264913}], \
TimeZone -> -4.] : 2015? You mean we are in the future?

DateObject[{2015, 10, 23}, TimeObject[{18, 43, 0.141572}], TimeZone -> -4.] DateObject[{2015, 10, 23}, TimeObject[{18, 42, 3.30681}], TimeZone -> -4.]  Back in good old 2015.

확실히 출력 형식을 더 좋게 만들 수 있습니다. 명시된 요구 사항을 충족시킵니다.


왜 지름길 LocalTime[]입니까? 다음 코드에서는 한 번만 나타납니다.
Michael Stern

어느 시점에서 나는 그것을 두 번 사용하고있었습니다. 그래도 잘 잡는다.
지식 상실

그것을 제거하고 세 문자를 저장합니다.
Michael Stern

0

그루비, 244 바이트

def s=9999,d={new Date()},y={it.year+1900},f={t,n->"$t $n: ${y(n)}? You mean we're in the future?"},p={t,n->"$t $n: Back in good old ${y(n)}."},t=d()
while(!sleep(s)){n=d()
c=n.time-t.time
println c<0?p(t,n):c>s*2?f(t,n):'Great Scott!'
t=n}

0

자바, 378 바이트

function detect()
{
int diffInDays = (int)( (newerDate.getTime() - olderDate.getTime()) 
                 / (1000 * 60 * 60 * 24) );
if(diffInDays>0) 
System.out.println(olderDate+" "+newerDate+": "+newerDate.getYear()+"? You mean we're in the future?");
else if(diffInDays<0) 
System.out.println(olderDate+" "+newerDate+": "+"Back in good old "+newerDate.getYear());
} 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.