2017 년은 거의 다왔다!


17

도전

도전은 간단하다 :

입력하지 않고 다음 메시지를 출력하십시오.

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

2016 년 12 월 31 일 UTC 자정 전후의 시간 수와 같은 횟수입니다.

예를 들어 UTC 12 월 31 일 19:01 인 경우 다음을 출력해야합니다.

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

23:24 UTC 12 월 31 일인 경우 다음을 출력해야합니다.

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

1 월 42 일 1시 42 분이면 다음을 출력해야합니다.

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

설명 : 12 월 31 일 10-11pm이면 두 번째, 12 월 31 일 12 월 31 일 출력 1, 00-01am 1 월 1 일 출력 1, 01-02am 1 월 1 일 출력 2 등을 출력해야합니다.

규칙

  • 입력 없음
  • 후행 줄이나 공백은 괜찮습니다.
  • 귀하의 프로그램은 내가 그것을 실행하는 시간이나 날짜에 상관없이 작동해야합니다 (많은 출력이 있더라도). 예를 들어 1 월 2 일 00:15에 코드가 25 번 출력됩니다.

(이것은 나의 첫 번째 코드 골프 질문이므로 중요한 것을 남겼다면 알려주십시오.)

이것은 코드 골프이므로 최단 비트 승리


시간 수가 가장 가까운 정수로 반올림됩니까? New-Year- 미드 나이트의 30 분 내에 있다면 출력이 없어야합니까?
Greg Martin

@GregMartin 설명을 보려면 편집본을 참조하십시오.
양자 spaghettification

1 월 3 일에 프로그램을 실행하면 어떻게됩니까?
betseg

@betseg 예, 나는 그것에 대해 생각했습니다. 편집 :)을 참조하십시오. 출력이 커도 동일하게 작동합니다.
양자 spaghettification

좋은 첫 질문입니다. 반올림 정보 : 반복 횟수는 반올림 된 1 월 1 일 UTC의 현재 시간 UCT와 0:00:00의 차이의 절대 값입니다. 옳은?
edc65

답변:


6

자바 스크립트 (ES6), 107

매개 변수가없는 익명의 방법으로

1483228800000이다Date.UTC(2017,0)

_=>` _     __    __
  |   |  | |   |
  |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

테스트 1 분마다 업데이트가 계속되지만 출력 변경 사항을 보려면 많은 인내심이 필요합니다.

F=_=>`_     __    __
 |   |  | |   |
 |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

update=_=>O.textContent=F()

setInterval(update,60000)

update()
<pre id=O></pre>


4

파이썬 2-97 + 17 = 114 바이트

import time
print'_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*int((abs(time.time()-1483228800)+3599)/3600)

edc65의 답변 에서 천장에 대한 빌린 논리 .

파이썬 3.5-116 바이트

import time,math
print('_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*math.ceil(abs(time.time()/3600-412008)))

math.ceil정수를 반환하는 3.x반면 2.x부동 소수점을 반환합니다.

덕분에 elpedro 3 바이트를 저장할.


@ElPedro 감사합니다. 그렇게하려고했지만 이전 솔루션에서 datetime.now(pytz.utc).timestamp()파이썬 3.5가 필요했습니다.
Gurupad Mamadapur


2

C는 연타 3.8.1 컴파일 327 317 145 바이트

@ edc65 덕분에 172 바이트 절약

#include <time.h>
t;main(){time(&t);t=abs(difftime(t,1483228800)/3600);while(t--)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");}

언 골프

#include <time.h>
t;
main()
{
time(&t);

t=difftime(t, 1483228800)/3600;

while(t--)
    puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

317 바이트

@ LegionMammal978 덕분에 10 바이트 절약

#include <time.h>
t,y,w;main() {struct tm n;time(&t);n=*localtime(&t);n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;n.tm_mday=1;w=n.tm_year;if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;t=(int)difftime(t, mktime(&n))/3600;t=t<w/2?t:w-t;for(;y++<t;)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");

언 골프

#include <time.h>
t,y,w;
main()
{
    struct tm n;
    time(&t);

    n=*localtime(&t);

    n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;
    n.tm_mday=1;
    w=n.tm_year;

    if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;

    t=(int)difftime(t, mktime(&n))/3600;
    t=t<w/2?t:w-t; 

    for(;y++<t;)
        puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

가능할 때 설명을 추가하겠습니다.


당신은 할 수 n.tm_hour=n.tm_min=...=n.tm_mon=0;없습니까?
LegionMammal978

@ LegionMammal978 오 예, 잊어 버렸습니다. 감사.
웨이드 타일러
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.