2017 Neredeyse Burada!


17

Meydan okuma

Zorluk basit:

Hiçbir giriş almamak ve aşağıdaki mesajı çıkarmak:

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

31 Aralık 2016'da UTC gece yarısından önce veya sonra saat sayısına eşittir.

Örnekler

Örneğin, saat 19:01 UTC Aralık 31 ise:

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

23:24 UTC 31 Aralık ise, çıktı almalısınız:

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

ve 1: 42 UTC 1 ise, çıktı:

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

Açıklama: 10-11pm 31 Aralık ise, iki çıkış, 11-12pm 31 31 çıkış bir, 00-01am jan 1 çıkış bir, 01-02am jan 1 çıkış iki vb.

kurallar

  • Giriş Yok
  • Sondaki çizgiler veya boşluklar iyi.
  • Programınız çalıştırdığım herhangi bir saatte veya günde çalışmalıdır (büyük bir çıktı olsa da). Örneğin, 2 Ocak 00: 15'te kodunuzun 25 kez çıkması gerekir.

(Bu benim ilk Code Golf sorum bu yüzden önemli bir şey bıraktıysanız lütfen bana bildirin.)

Bu Kod Golf yani En kısa bitler kazanıyor


Saat sayısı en yakın tam sayıya yuvarlandı mı? Yeni Yıl gece yarısından yarım saat içinde ise çıktı alınmamalı mı?
Greg Martin

@GregMartin Açıklama için düzenlememe bakın.
Kuantum spagettifikasyonu

Programı 3 Ocak'ta çalıştırırsam ne olur?
betseg

@betseg ye bunu düşündüm. Bkz. Düzenleme :). Çıktı büyük olsa bile aynı şekilde çalışmalıdır.
Kuantum spagettifikasyonu

Güzel bir ilk soru. Yuvarlama hakkında: tekrar sayısı, şu anki UCT zamanı ile 1 Ocak UTC'nin 0:00:00 arasındaki farkın mutlak değeridir. Doğru?
edc65

Yanıtlar:


6

JavaScript (ES6), 107

Parametresiz anonim bir yöntem olarak

Not 1483228800000:Date.UTC(2017,0)

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

Test Bu, her 1 dakikada bir güncellenmeye devam eder, ancak çıktı değişikliğini görmek için çok sabırlı olmanız gerekir.

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

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

setInterval(update,60000)

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


4

Python 2-97 + 17 = 114 bayt

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

Edc65'in cevabından tavan için ödünç mantık .

Python 3,5 - 116 bayt

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

math.ceilbir tamsayıyı döndürür 3.x, oysa 2.xbir şamandıra döndürür.

3 bayt kaydettiğiniz için teşekkürler elpedro .


@ElPedro Teşekkürler. Bunu yapmak üzereydim, önceki çözümlerimde datetime.now(pytz.utc).timestamp()python 3.5 gerektiren uğraştım.
Gurupad Mamadapur


2

C Clang 3.8.1 ile derlenmiş 327 317 145 Bayt

@ Edc65 sayesinde 172 bayt kaydedildi

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

Ungolfed

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

t=difftime(t, 1483228800)/3600;

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

317 bayt

@ LegionMammal978 sayesinde 10 bayt kaydedildi

#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");

Ungolfed

#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");
}

Yapabileceğim zaman bazı açıklamalar ekleyeceğim.


Yapamaz mısın n.tm_hour=n.tm_min=...=n.tm_mon=0;?
LegionMammal978

@ LegionMammal978 Oh evet, unuttum. Teşekkürler.
Wade Tyler
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.