2017 लगभग यहाँ है!


17

चुनौती

चुनौती सरल है:

कोई इनपुट नहीं लेना और निम्न संदेश का उत्पादन करना:

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

31 दिसंबर 2016 को मध्यरात्रि यूटीसी से पहले या बाद में घंटों की संख्या के बराबर संख्या।

उदाहरण

उदाहरण के लिए यदि यह 19:01 यूटीसी 31 वें क्रम पर है तो आपको आउटपुट देना चाहिए:

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

अगर यह २३:२४ यूटीसी ३१ वाँ है तो आपको उत्पादन करना चाहिए:

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

और अगर यह 1:42 यूटीसी जान 1 है तो आपको आउटपुट देना चाहिए:

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

स्पष्टता: यदि यह 10-11pm 31 डिग्री है तो आपको दो उत्पादन करना चाहिए, 11-12 पीपीएम 31 वीं आउटपुट एक, 00-01am जून 1 आउटपुट एक, 01-02am 1 जनवरी आउटपुट दो आदि ...

नियम

  • कोई इनपुट नहीं
  • अनुगामी रेखाएँ या स्थान ठीक हैं।
  • आपके कार्यक्रम को किसी भी समय या दिन में काम करना चाहिए जो मैं इसे चलाता हूं (एक बड़े आउटपुट के साथ)। उदाहरण के लिए जून 2 पर 00:15 बजे आपका कोड 25 बार आउटपुट होना चाहिए।

(यह मेरा पहला कोड गोल्फ सवाल है, इसलिए यदि मैंने किसी भी चीज को महत्वपूर्ण छोड़ दिया है तो कृपया मुझे बताएं।)

यह कोड गोल्फ है इसलिए सबसे कम बिट्स जीतते हैं


निकटतम पूर्णांक तक कितने घंटे की अवधि होती है? यदि यह नए साल की आधी रात के भीतर है, तो क्या कोई आउटपुट नहीं होना चाहिए?
ग्रेग मार्टिन

@GregMartin स्पष्टीकरण के लिए मेरा संपादन देखें।
क्वांटम स्पेगेटीफिकेशन

यदि मुझे 3 जनवरी को कार्यक्रम चलाना है तो क्या होना चाहिए?
betseg

@ लेस्सेग तु मैंने सिर्फ उसी के बारे में सोचा था। संपादित देखें :)। भले ही आउटपुट बड़ा हो, लेकिन इसे उसी तरह से काम करना चाहिए।
क्वांटम स्पैगेटिफिकेशन

अच्छा पहला सवाल। गोलाई के बारे में: दोहराव की संख्या वर्तमान समय के UCT और 1 जनवरी के 0:00:00 के बीच के अंतर का पूर्ण मूल्य है, गोल। सही बात?
edc65

जवाबों:


6

जावास्क्रिप्ट (ईएस 6), 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इसमें एक फ्लोट देता है।

3 बाइट बचाने के लिए धन्यवाद elpedro


@ElPedro धन्यवाद ऐसा करने के बारे में था, मेरे पिछले समाधानों में मैं फ़िडलिंग कर रहा था datetime.now(pytz.utc).timestamp()जिसके लिए अजगर 3.5 की आवश्यकता थी।
गुरुपद ममदापुर ११


2

C क्लेंग 3.8.1 327 317 145 बाइट्स के साथ संकलित

172 बाइट्स @ edc65 की बदौलत बच गए

#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 बाइट्स

10 बाइट्स @ LegionMammal978 की बदौलत बच गए

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

मैं कुछ स्पष्टीकरण जोड़ूंगा जब मैं कर सकूंगा।


क्या आप नहीं कर पा रहे हैं n.tm_hour=n.tm_min=...=n.tm_mon=0;?
लीजनमोनमल 978

@ LegionMammal978 ओह हाँ, मैं भूल गया। धन्यवाद।
वेड टायलर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.