Legen ... इसके लिए प्रतीक्षा करें ...


68

dary!

पूरी तरह से असंबंधित घटनाओं में अगले कुछ दिनों में मेरे साथ क्या होगा , मैं आपको निम्नलिखित कोड लिखने का काम देता हूं:

  1. छाप

    Legen... wait for it...
    

    तुरंत, एक अनुगामी newline के साथ।

  2. अगले पूरे घंटे तक प्रतीक्षा करें (जब बैज रन देने के लिए क्रोन नौकरी)।

  3. छाप

    dary!
    

    एक वैकल्पिक अनुगामी न्यूलाइन के साथ।

अतिरिक्त नियम

  • आप एक कार्यक्रम या एक फ़ंक्शन लिख सकते हैं, लेकिन आउटपुट को STDOUT (या अपनी भाषा के अपने निकटतम विकल्प) पर मुद्रित करना होगा।

  • आपको अगले पूरे घंटे तक इंतजार करना होगा , न कि केवल 60 मिनट के लिए। यदि कोड 6:58 पर चलाया जाता है, तो इसे 7:00 बजे दूसरी पंक्ति प्रिंट करना चाहिए।

  • अंतिम पंक्ति को अगले पूरे घंटे के बाद एक सेकंड के बाद नहीं मुद्रित किया जाना चाहिए।

  • इस घटना में कि कार्यक्रम पूरे एक घंटे के पहले दूसरे में शुरू किया गया है, इसे अगले पूरे घंटे तक इंतजार करना चाहिए।

  • आप स्थानीय या UTC समय की क्वेरी कर सकते हैं।

  • मानक नियम लागू होते हैं।


1
मुझे समझ में नहीं आता कि तीसरा अतिरिक्त नियम मूल "अगले घंटे तक प्रतीक्षा करें" से अलग कैसे है
घातक

2
@ फ़ेटलेट करें यह केवल एक स्पष्टीकरण है जिसे आपको घंटे बदलने तक इंतजार करना होगा, मिनटों और सेकंडों तक नहीं जब तक दोनों 00 पर न हों
डेनिस

25
हैप्पी पौराणिक बैज, @ डेनिस!
क्रिस्ति लिथोस

36
@ ΣριΚικσιΛίθοΚ धन्यवाद! (टैब-पूरा होने के लिए भगवान का शुक्र है।)
डेनिस

2
"घंटे पर" एक अधिक मानक होगा (और मुझे विश्वास है कि आप अगले अगले घंटे "कम से कम अमेरिकी अंग्रेजी में" क्या कहते हैं) के तरीके को और अधिक स्पष्ट करेंगे।
jpmc26

जवाबों:


12

पायथ, ४२ ४१

J.d6." wâ«­hÖ`Ùá©h´^"WqJ.d6;"dary!

नीचे कोड का एक हेक्सडंप है:

00000000  4a 2e 64 36 2e 22 20 77  0c 10 89 e2 ab 1b ad 68  |J.d6." w.......h|
00000010  0f 8c d6 60 d9 e1 a9 68  82 b4 5e 22 57 71 4a 2e  |...`...h..^"WqJ.|
00000020  64 36 3b 22 64 61 72 79  21                       |d6;"dary!|

@ बसाक के लिए 1 बाइट का धन्यवाद सहेजा गया

.dस्थानीय समय संबंधी मान प्राप्त करने के लिए फ़ंक्शन का उपयोग करता है । .d6वर्तमान समय लौटाता है। यह पहली स्ट्रिंग को प्रिंट करता है, तब तक इंतजार करता है जब तक कि घंटे कार्यक्रम से शुरू होने वाले विज्ञापन से अलग न हो जाए और फिर दूसरे स्ट्रिंग को प्रिंट कर दे।

आप के साथ ऑनलाइन की कोशिश कर सकते .d7या .d8मिनट / सेकंड के लिए लेकिन ऑनलाइन संकलक केवल कुछ भी प्रिंट जब कार्यक्रम समाप्त हो जाता है।

बधाई हो, डेनिस! :)


पैक्ड-स्ट्रैप का उपयोग करके स्ट्रिंग को 1 बाइट्स द्वारा संपीड़ित किया जा सकता है। 0000000: 2e22 2077 0c10 89e2 ab1b ad68 0f8c d660 ." w.......h...` 0000010: d9e1 a968 82b4 5e22 0a ...h..^".
Hexdump

@ आइसाकग वूप्स, मैंने जाँच की थी कि लेकिन मुझे गिनती गड़बड़ करनी चाहिए थी। मैंने सोचा कि यह केवल 1 बाइट को संपीड़ित करता है इसलिए अतिरिक्त .इसे समान लंबाई बना देगा। मूर्खतापूर्ण ऑफ-बाय-वन त्रुटियां: P
FryAmTheEggman

बस यह पता लगाने की कोशिश की जा सकती है कि यह क्या हो सकता है (बिना किसी अनुभव के सबके साथ) ने मुझे हंसाया। मैं देखता हूं dary, लेकिन नहीं legen! और पाइथ का दावा है कि पारंपरिक प्रोग्रामिंग के लिए इस्तेमाल करने वालों के लिए इसे समझना आसान है ...
साइको

@Cyoce यदि आप संपादन इतिहास में देखते हैं तो आपको संस्करण पढ़ने में आसानी हो सकती है। ."इंगित करता है कि स्ट्रिंग कुछ उस पर प्रदर्शन किया वास्तविक स्ट्रिंग प्राप्त करने के लिए आपरेशन होना चाहिए। यह सिर्फ गोल्फ के लिए एक संपीड़न चाल है। यदि आप पायथ सीखने की कोशिश करने का फैसला करते हैं, तो शुभकामनाएं! मत भूलो कि इसके लिए एक चैट रूम भी है :)
FryAmTheEggman

26

जावास्क्रिप्ट (ईएस 6), 74 बाइट्स

आप परीक्षण से पहले अपनी प्रणाली की घड़ी को बदलना चाहते हैं, तो बधाई हो अगर आप 59 मिनट अतीत में यहां आए।

setTimeout(a=alert,36e5-new Date%36e5,"dary!");a`Legen... wait for it...
`


11
के 36e5स्थान पर काम करेगा 3.6e6?
ETHproductions

8
@ETHproductions आप सौंदर्य!
जॉर्ज रीथ

3
@ETHproductions यह कुछ बुरा वैज्ञानिक संकेतन है। मुझे नहीं पता था कि यह जावास्क्रिप्ट पर काम करता है। आज कुछ सीखा !!!
इस्माईल मिगुएल

2
@Optimizer आह नहीं पता था setTimeoutचाहेंगे evalमेरे लिए। सच ... मैं मूल रूप से उपयोग करने की कोशिश कर रहा था, console.logलेकिन यह तब भी काम नहीं करता है जब संदर्भ के कारण एक चर में संग्रहीत किया जाता है। तुम भी खूबसूरत हो!
जॉर्ज रीथ

1
आप setTimeoutठीक से उपयोग कर सकते हैं और यहां तक ​​कि एक बाइट भी बचा सकते हैं :alert`Legen…`;setTimeout(alert,36e5-new Date%36e5,"dary!")
बर्गी

9

सीजेएम, 49 48 बाइट्स

et3="Legen... wait for it...
"o{_et3==}g;"dary!"

स्थानीय समय का उपयोग करता है। परीक्षण प्रयोजनों के लिए, आप के दो उदाहरणों की जगह ले सकता 3के साथ 4या 5यह अगले मिनट / सेकंड के शुरू में मुद्रित करने के लिए।

इसका परीक्षण यहां करें। लेकिन ध्यान दें कि कार्यक्रम समाप्त होने तक ऑनलाइन दुभाषिया कोई आउटपुट नहीं दिखाता है। वैकल्पिक रूप से, आप इसे ऑनलाइन आज़मा सकते हैं , जहां आउटपुट बफ़र्ड होने के बजाय लगभग तुरंत दिखाया जाता है (लेकिन जब आप इसे घंटों के बजाय सेकंड के साथ परीक्षण करते हैं, तो देरी ध्यान देने योग्य होगी)। किसी भी मामले में, यदि आप इसे जावा दुभाषिया के साथ स्थानीय रूप से चलाते हैं, तो यह एक आकर्षण की तरह काम करता है।

व्याख्या

यह CJam का उपयोग करता है etजो आपको एक सरणी देता है

[year month day hour minute second ms weekday utc_offset]

यहाँ कोड का टूटना है:

et3=       e# Get the current hour.
"Legen..." e# Push the first string including the linefeed.
o          e# Print it.
{          e# While the top of stack is truthy (which is popped)...
  _        e#   Copy the original hour.
  et3=     e#   Get the current hour.
  =        e#   Check for equality.
}g
;          e# Discard the original hour.
"dary!"    e# Push the second string which is printed automatically.

बोनस

यह भी एक ही बाइट गिनती के लिए काम करता है:

et4<"Legen... wait for it...
"o{et1$#!}g;"dary!"

घंटे का चयन करने के बजाय, हम तिथि और घंटे के साथ उपसर्ग का चयन कर रहे हैं , और लूप को चालू रखते हुए जबकि डेटाइम सरणी अभी भी उपसर्ग है।


9

AppleScript, 157 149 बाइट्स

हुह। हैरानी की बात है।

(वर्तमान तिथि) के समय स्ट्रिंग में नंबर 1 पर सेट करें
लॉग "Legen ... इसके लिए प्रतीक्षा करें ..."
(वर्तमान तिथि) के समय स्ट्रिंग में d = संख्या 1 के दौरान दोहराएं
समाप्त
लॉग इन करें "dary!"

चूंकि logस्क्रिप्ट एडिटर के संदेश फलक में प्रिंट होता है, इसलिए मैं इसे STDOUT का सबसे निकटतम आउटपुट मानता हूं। मूल रूप से, यदि आपको वर्तमान तिथि का समय मिलता है, तो यह कुछ इस तरह करेगा:

कोड:

समय का तार (वर्तमान तिथि)

आउटपुट:

5:02:03 अपराह्न

यह 5बृहदान्त्र से पहले संख्या ( ) को पकड़ लेगा ।

मैंने सोचा कि यह वास्तव में इस से बहुत लंबा होगा। xD


यदि आप इसे 03:03:00 पर चलाते हैं तो क्या होता है?
ब्लैकलाइट शाइनिंग

@BlacklightShining इसे आगे की तरफ नंबर 3 मिलेगा और चार होने तक इंतजार करना होगा। यह केवल बृहदान्त्र से पहले की संख्या से अवगत है।
Addison Crump

ओह, मैं चूक गया। ठीक है। ताज्जुब है, मैं वास्तव में सिर्फ ... "1"से हो रही हूँnumber 1 in time string of(current date)
ब्लैकलाइट शाइनिंग

@BlacklightShining आप एल Capitan में एक पुराने संस्करण का उपयोग कर रहे हैं - यह इसके बराबर है first number in time string of (current date)
Addison Crump

मैं योसेमाइट पर हूँ, हाँ। first numberमुझे समय का पहला अंक भी देता है ( "0"अभी, 04:38 पर)।
ब्लैकलाइट शाइनिंग

8

स्नोमैन 1.0.2 , 70 69 बाइट्स

~"Legen... wait for it...
"sP3600000*vt#nDnC!*:vt+#nD!#nL;bD"dary!"sP

स्पष्टीकरण:

~              Make all variables active.
"..."sP        Print the first string.
3600000*vt#nD  Get the number of hours since the Unix epoch.
nC             Ceiling (round up), giving the time (divided by 36000) at which to
                 print the second string.
!*             Save that in a permavar.
:...;bD        Do the stuff in the block while its "return value" is truthy.
  vt+#nD       Again, get the number of hours since epoch.
  !#             Store the permavar that we saved earlier.
  nL             Is the current time less than the target time? (if so,
                   keep looping)
"..."sP        Print the second string.

7

PHP, 76, 70, 65, 62 51 बाइट्स

Legen... wait for it...
<?while(+date(is));?>dary!

पिछला तर्क (63b):

Legen... wait for it...
<?for($h=date(G);date(G)==$h;)?>dary!

इस तरह की कोडिंग से आप अपनी नौकरी ढीली कर सकते हैं, लेकिन यह तब तक चलता रहता है जब तक कि समय आईआईटी से 1 घंटा आगे न हो जाए।

-1 की जगह बाइट {}जबकि afer ;(धन्यवाद manatwork)
की जगह -5 बाइट्स echo'dary!';के लिए ?>dary!(धन्यवाद manatwork)
की जगह -4 बाइट्स <?phpलघु संस्करण के लिए <?(धन्यवाद Primo)
की जगह -1 बाइट whileएक के लिए for
की जगह -3 बाइट्स date(G)!=$h+1के लिए date(G)==$h(धन्यवाद इमो)


एक अच्छा, लेकिन {};और echo?>इसे थोड़ा कम करेगा। हालांकि मैं पसंद करूंगाLegen... wait for it...↵<?php while(+date('is'));?>dary!
मैनटवर्क

1
कुछ सुझाव: आप छोटे खुले टैग (केवल के <?बजाय <?php) का उपयोग कर सकते हैं । का उपयोग कर के रूप for(;;)में एक ही लंबाई है while(), लेकिन आप $hअर्ध-बृहदान्त्र ( for($h=date(h);...) की आवश्यकता के बिना, असाइनमेंट को स्थानांतरित करने की अनुमति देता है । {}आवश्यक नहीं थे, लेकिन न तो है ;पूर्ववर्ती ?>। आपको $h12 के साथ समस्या हो सकती है , हालांकि ( date(h)13 कभी नहीं होगी)।
प्रिमो

आप दोनों को धन्यवाद, मेरे उत्तर को तदनुसार अद्यतन करें। Im बहुत अच्छा नहीं लग रहा है, मुझे लगता है कि मुझे आज महत्वपूर्ण काम नहीं करना चाहिए, क्योंकि यह स्पष्ट रूप से हाहा दिखाता है
Martijn

2
बदले date(G)!=$h+1के लिए date(G)==$h। छोटा, और घंटे की समस्या को हल करता है;) इसके अलावा, अर्ध-बृहदान्त्र को पहले हटा दें ?>
प्रिमो

1
@manatwork यह प्रतीक्षा करने में विफल रहेगा कि क्या कोड HH:00:00पूरे समय के पहले सेकंड के भीतर यानी कोड पर चलाया जाता है ।
प्रिमो

7

पर्ल 6 , 60 बाइट्स

sleep 60²-now%60²+say 'Legen... wait for it..';say 'dary!'

4
मैं ध्यान दें कि चाहते हैं 60²बस गया था कुछ दिन पहले जोड़ा
ब्रैड गिल्बर्ट b2gills

वाह, इस चुनौती के लिए अयोग्य होने के करीब!
बिल्ली

10k पर बधाई!
एमडी XF

5

जावास्क्रिप्ट 94 90 87 बाइट्स

इतना नहीं गोल्फ ...

alert`Legen... wait for it...`,l=l=>~~(Date.now()/36e5);for(z=l();z==l(););alert`dary!`

डाउनगेट का संस्करण:

(a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();for(;z==b(););a`dary!`

यह वर्तमान घंटे को स्टोर करता है और जब तक "पुराना" घंटा वर्तमान के बराबर होता है तब तक लूप्स को स्टोर करता है। जैसे ही घंटा बदल गया है, यह बाकी प्रिंट करेगा! : डी

अस्वीकरण: यदि आपका ब्राउज़र इसे नापसंद करता है, तो आपको चेतावनी दी गई है।


2
87 बाइट्स:(a=alert)`Legen... wait for it...`,l=new Date,z=(b=l.getHours)();for(;z==b(););a`dary!`
डाउनगेट

@Downgoat धन्यवाद! (मैं इसे अभी गोल्फ करने की कोशिश कर रहा हूं ..)
स्टीफनोट

1
इससे भी कम (85 बाइट्स):(a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();for(;z==b(););a`dary!`
डाउनगोवेट

2
@Downgoat एक बाइट छोटी:for((a=alert)`Legen... wait for it...`,z=(b=new Date().getHours)();z==b(););a`dary!`
इस्माइल मिगुएल

4

MATLAB - 89 बाइट्स

a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')

सुंदर आत्म-व्याख्यात्मक। सबसे पहले, सिस्टम क्लॉक के वर्तमान घंटे को हथियाने के लिए एक फंक्शन हैंडल बनाएं। फिर, Legen... wait for it...एक गाड़ी वापसी के साथ प्रदर्शित करें, और फिर हम एक whileलूप में जाते हैं, जहां हम यह देखने के लिए चेक करते रहते हैं कि क्या 1 के साथ जोड़ा गया घंटा वर्तमान घंटे के बराबर नहीं है । यदि यह है, तो लूपिंग रखें। केवल जब तक कि जब अगले घंटे न हो जाए, हम प्रदर्शित करते हैं dary!और एक गाड़ी वापसी के बाद होती है।

MATLAB का घंटा 24-घंटे के अनुक्रमण पर आधारित है, इसलिए modआधार 24 के साथ संचालन को रात 11 बजे (23:00) से लेकर मध्यरात्रि (00:00) तक फैलाने की आवश्यकता होती है।

लघु नोट

hourसमारोह वित्तीय समय श्रृंखला टूलबॉक्स की आवश्यकता है। nowसमारोह इस प्रतिबंध के अधीन नहीं है, लेकिन यह एक सीरियल नंबर के रूप में वर्तमान दिनांक और समय को पुन: प्राप्त hourइस प्रकार वर्तमान घंटे की गणना करने का उपयोग करता है।

ऑक्टेव में इसे चलाना चाहते हैं?

ज़रूर! क्योंकि ऑक्टेव में यह टूलबॉक्स नहीं है, हमें बस hourफ़ंक्शन को संशोधित करना होगा ताकि यह कॉल करे datevecजो 6 तत्वों के वेक्टर को लौटाता है - वर्ष, महीने, दिन, घंटे, मिनट और सेकंड में से प्रत्येक के लिए। आपको आउटपुट का चौथा तत्व निकालना होगा:

a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')

अतिरिक्त वर्ण 98 बाइट तक समाधान बनाते हैं, लेकिन आप इसे ऑक्टेव में चला पाएंगे। फ़ंक्शन हैंडल में एक अस्थायी चर के बिना इन-प्लेस इंडेक्सिंग पर ध्यान दें।

कोई वित्तीय समय श्रृंखला टूलबॉक्स नहीं?

यदि आप वित्तीय समय श्रृंखला टूलबॉक्स के बिना MATLAB में इसे चलाना चाहते हैं , क्योंकि आप अस्थायी एक के बिना तुरंत चर में अनुक्रमित नहीं कर सकते हैं, यह लिखने के लिए थोड़ा और बाइट्स ले जाएगा:

disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');

यह पहली बार वर्तमान समय और तारीख को प्राप्त करता है और इसे चर में संग्रहीत करता है और hसाथ ही इसे स्वचालित चर में संग्रहीत करता है ans। यदि वर्तमान घंटे अगले घंटे के बराबर नहीं है, तो हम लूपिंग और जांच करते रहते हैं। प्रत्येक पुनरावृत्ति पर, हम वर्तमान समय और तिथि के साथ स्वचालित चर को अद्यतन करते रहते हैं। जैसे ही अगले घंटे वर्तमान समय और तिथि के साथ मेल खाता है, हम स्ट्रिंग का अंतिम भाग प्रदर्शित करते हैं और छोड़ देते हैं। यह बाइट काउंट को 114 तक पहुंचाता है।


यह भी ध्यान रखें कि आप इसे ऑनलाइन नहीं आज़मा सकते। ऑक्टेव दुभाषियों को ऑनलाइन जब कोड निष्पादित होता है पर एक समय सीमा होगी, और क्योंकि यह एक whileलूप है जो अगले घंटे होने की प्रतीक्षा कर रहा है, आपको कोड चलाने के लिए प्रतीक्षा करते समय एक टाइमआउट मिलेगा। सबसे अच्छी चीज जो आप कर सकते हैं वह है इसे अपनी मशीन पर चलाएं और जांचें कि यह काम करता है।


अपने पहले एक में आप nowलूप में जाँच करने के बजाय 3 बाइट्स बचा सकते हैं a=@()disp('Legen... wait for it...');while floor(mod(now*86400,3600))end;disp('dary!'):। आप a=@()बिट को हटाकर आगे की 5 बाइट्स भी बचा सकते हैं, क्योंकि जैसे-जैसे कोड एक पूर्ण प्रोग्राम बनता है। संलग्न कोड को FTS टूलबॉक्स की भी आवश्यकता नहीं है।
टॉम कारपेंटर

वित्तीय टूलबॉक्स hourफ़ंक्शन के बारे में आपको पृथ्वी पर कैसे पता चला ? :-)
लुइस मेंडो

अब मैं देख रहा हूँ कि अनुक्रमण के लिए मध्यवर्ती चरों की आवश्यकता के बारे में आपकी टिप्पणी से आपका क्या अभिप्राय है ...
लुइस मेंडू

4

गणितज्ञ, 81५ 85४ by१ बाइट्स

c=Print;c@"Legen... wait for it...";a:=DateValue@"Hour";b=a;While[a==b];c@"dary!"

मुझे लगता है कि आप "दरिया!" बनाकर 2 बाइट बचा सकते हैं। अभिव्यक्ति उत्पादन।
कैलक्यूलेटर

@CatsAreFluffy तो यह सिर्फ एक स्निपेट होगा और एक पूर्ण कार्यक्रम नहीं।
लीजनमोनमल 978

इसलिए? क्या Mathematica में अभिव्यक्ति आउटपुट स्वीकार्य नहीं है, या मैं कुछ याद कर रहा हूं?
CalculatorFeline

@CatsAreFluffy Mathematica स्क्रिप्ट मौजूद हैं, इसलिए किसी भी पूर्ण कार्यक्रम को एक में चलाने की उम्मीद है।
२१:५० पर लीजनमॉमल

4

सी, 163 बाइट्स

#include<time.h>
f(){puts("Legen... wait for it...");time_t t=time(0);struct tm l=*localtime(&t);while(l.tm_min+l.tm_sec)t=time(0),l=*localtime(&t);puts("dary!");}

3
PPCG में आपका स्वागत है!
16

155 बाइट्स (टीआईओ पर इसे चलाने से परेशान न हों, यह खत्म नहीं होगा, यह एक मिनट के बाद बाहर हो जाएगा)
एमडी एक्सएफ

3

माइक्रोसेप्टिक II, 45 बाइट्स

"Legen... wait for it..."P[36s5E*sD%_]"dary!"

अंत में, Dनिर्देश के लिए एक उपयोग ।

पहले स्ट्रिंग को प्रिंट करता है, बार-बार यूटीसी समय को मिलीसेकेंड मॉडुलो में 3,600,000 तक ले जाता है जब तक कि यह पैदावार नहीं देता है, और फिर दूसरी स्ट्रिंग का उत्पादन करता है जो अंतर्निहित रूप से मुद्रित होता है। 3,600,000 को कोड में 36x10 5 के रूप में दर्शाया गया है ।


क्या आप एक स्पष्टीकरण जोड़ सकते हैं? c:
एडिसन क्रम्प

@VoteToClose Done
SuperJedi224

3

टीआई-बेसिक, 70 64 बाइट्स

getTime
Disp "Legen... wait for it...
Repeat sum(getTime-Ans,1,1
End
"dary

इन दो-बाइट लोअरकेस अक्षरों को शाप दें!

getTimeएक तीन-तत्व सूची देता है {hours minutes seconds}, इसलिए 1 तत्व से 1 तक का योग घंटे है। जब प्रारंभ और वर्तमान घंटों में घंटों के बीच अंतर होता है, तो लूप समाप्त हो जाता है। इस अवलोकन के लिए @FryAmTheEggman को धन्यवाद।


3

आर - 97 बाइट्स

cat('Legen... wait for it...\n')
Sys.sleep(1)
while(as.double(Sys.time())%%3600>0){}
cat('dary!')


3

पायथन 2, 82 81 बाइट्स

from time import*;print'Legen... wait for it...';sleep(-time()%3600);print'dary!'

टिप्पणी करने के लिए बहुत कम प्रतिष्ठा। अलेक्जेंडर निगल के समाधान का पायथन 2 संस्करण। कोष्ठक पर खोए हुए पात्रों को सहेजता है। इसके अलावा, सोने के समय की गणना में 3600 की जरूरत नहीं है।

कुल मिलाकर 7 किरदार बच गए।

संपादित करें: -1 बाइट @ केविन क्रूज़सेन को धन्यवाद


1
;कार्यक्रम के अंत में अनुगामी को हटाकर एक अतिरिक्त बाइट को बचाया जा सकता है । इसके बिना ठीक काम करने लगता है। :) अच्छा जवाब, हालांकि, तो +1 मुझसे (अब आप टिप्पणी कर सकते हैं)।
केविन क्रूज़सेन

धन्यवाद लोड @KevinCruijssen
हेनरी टी

2

विंडोज कमांड स्क्रिप्ट, 87 बाइट्स

@set.=%time:~,2%&echo.Legen... wait for it...
:.
@if %.%==%time:~,2% goto:.
@echo.dary!

यह लगातार वर्तमान घंटे के खिलाफ शुरू किए गए एक घंटे-चर की तुलना करता है और यदि अलग है तो सफल होता है।


2

पर्ल, 62 बाइट्स

sleep -++$^T%3600+print'Legen... wait for it...
';print'dary!'

विशेष चर $^T(उर्फ $BASETIME) स्क्रिप्ट शुरू होने के बाद से युग से संख्या सेकंड रिकॉर्ड करता है। सौभाग्य से, लीप सेकंड की गिनती कुल में नहीं की जाती है, ताकि निम्नलिखित बराबर हो:

print$^T%3600;
@T=gmtime;print$T[1]*60+$T[0];

हैरानी की बात है, यह चर केवल पढ़ने के लिए नहीं है।


यहां गिनती -Eसामान्य नहीं लगती है, इसलिए आप 5 बाइट्स का उपयोग करके बचा सकते हैं say
डेनिस

चुनौती विवरण से: "आप एक कार्यक्रम या एक समारोह लिख सकते हैं।" कमांड लाइन से चलने वाला कोड न तो है।
प्राइमो

में तुम्हारी बात समझ रहा हूँ। हालाँकि, प्रोग्राम या फ़ंक्शंस पर प्रतिबंध डिफ़ॉल्ट रूप से सभी चुनौतियों पर लागू होता है , फिर भी हम अभी भी perl -Eसबमिशन और भाषाओं की अनुमति देते हैं, जिसमें केवल ऑनलाइन दुभाषिए होते हैं।
डेनिस

मैं असहमत हूं कि -Eडिफ़ॉल्ट रूप से अनुमति दी जानी चाहिए। ज्यादातर मामलों में, सुधार तुच्छ और अबाधित है, वैसे भी।
प्रिमो

2

जाप , 72 61 बाइट्स

`{?tT?e?t(Ã?t,36e5-?w D?e%36e5,'ÜÝ!'),'Leg?... Ø2 f? ?...\n'}

प्रत्येक ?एक यूनिकोड unprintable चार का प्रतिनिधित्व करता है। यहां बताया गया है कि पूर्ण पाठ कैसे प्राप्त करें:

  1. ऑनलाइन दुभाषिया खोलें ।
  2. इस कोड को कोड बॉक्स में पेस्ट करें:
Oc"`\{setTimeout(alert,36e5-new Date%36e5,'dary!'),'Legen... wait for it...\\n'}
  1. कोड चलाएँ, फिर कोड बॉक्स से इसे मिटा दें।
  2. आउटपुट बॉक्स की सामग्री का चयन करें और कोड बॉक्स पर खींचेंकॉपी-पेस्ट करने से काम नहीं चलेगा
  3. पहले स्थान को गैर-ब्रेकिंग स्थान से बदलें।
  4. (वैकल्पिक) अपने कंप्यूटर की घड़ी को xx: 59 पर सेट करें।
  5. कोड चलाएँ।

वैकल्पिक रूप से, यहाँ एक (उम्मीद के विपरीत) हेक्सडम्प है:

00000000: 607b a074 548b 658c 7428 c300 742c 3336 65    `{ tT?e?t(Ã?t,36e
00000011: 352d 9a77 2044 8565 2533 3665 352c 27dc dd    5-?w D?e%36e5,'ÜÝ
00000022: 2127 293b 274c 6567 812e 2e2e 20d8 3220 66    !'),'Leg?... Ø2 f
00000033: 8e20 8a2e 2e2e 5c6e 277d                      ? ?...\n'}

यह कोड जॉर्ज रीथ के जावास्क्रिप्ट उत्तर पर आधारित है , जिसमें कुछ विशिष्ट-विशिष्ट परिवर्तन हैं। मुझे दूसरे दिन पता चला कि यदि आप कोड को संक्षिप्त करते हैं और इसे एक बैकटिक-लिपटे स्ट्रिंग में सम्मिलित करते हैं, तो यह स्वचालित रूप से विघटित हो जाएगा। यहां बताया गया है कि इसे संकलन के माध्यम से कैसे संसाधित किया जाता है:

`{?tT?e?t(Ã?t,36e5-?w D?e%36e5,'ÜÝ!'),'Leg?... Ø2 f? ?...\n'}
"{setTimeout(alert,36e5-new Date%36e5,'dary!'),'Legen... wait for it...\n'}"
""+(setTimeout(alert,36e5-new Date%36e5,'dary!'),'Legen... wait for it...\n')+""

जेएस में, कोष्ठकों की एक जोड़ी अंदर अंतिम मान लौटाएगी; इस प्रकार, यह कोड समयबद्ध घटना सेट करता है, फिर 'Legen...'स्ट्रिंग लौटाता है , जो स्वचालित रूप से STDOUT को भेजा जाता है। चूंकि वर्तमान में जाप में संकलन पर स्वचालित आउटपुट के अलावा अन्य सामग्री को जोड़ने का कोई तरीका नहीं है, इसलिए मैंने alertसमयबद्ध आउटपुट के लिए वेनिला JS फ़ंक्शन का उपयोग किया है । मुझे उम्मीद है कि इसकी अनुमति है।


क्या आप इसका एक हेक्सडंप पोस्ट कर सकते हैं?
एक स्पेगेटो

@quartata किया। मेरा मानना ​​है कि यह सही है।
ETHproductions

2

पॉवर्सशेल, 52 51 बाइट्स

-1 बाइट धन्यवाद @Veskah

'Legen... wait for it...'
for(;Date|% M*e){}'dary!'

इस अभिव्यक्ति को वर्तमान दिनांक समय मान Date|% M*eसे Minuteसंपत्ति से मूल्य मिलता है। पाश Minute0 के बराबर होने पर समाप्त होता है ।


1
आपको सीधे ब्रेसिज़ के बाद 'dary' लगाने में सक्षम होना चाहिए, या कम से कम आप PSv5 में कर सकते हैं।
विस्कह

1

पायथन, 112 बाइट्स

import time as t;print "Legen... wait for it...";n=t.ctime();t.sleep((60-n.tm_min)*60+60-n.tm_sec);print "dary!"

सुंदर आत्म व्याख्यात्मक।


प्रिंट स्टेटमेंट और निम्न स्ट्रिंग्स के बीच रिक्त स्थान से छुटकारा पाकर 2 बचा सकते हैं। :)
हेनरी टी

1

पायथन - 159 बाइट्स

from datetime import*;from threading import*;p=print;n=datetime.now();p('Legen... wait for it...');Timer(3600-(n.minute*60+n.second),lambda:p('dary!')).start()

1

माउस- 2002 , 62 बाइट्स

उपयोगकर्ता को एन्टर प्रेस करने की आवश्यकता है। मुझे लगता है।

"Legen... wait for it..."?&HOUR 1+x:(&HOUR x.=["dary"33!'0^])

ठीक है, ठीक है, जबकि हम बहुत सारे बाइट्स ले रहे हैं और कुछ भी नहीं जीत रहे हैं, चलो थोड़ा मजा करें।

"Legen... wait for it... "?     ~ print & require keypress

&HOUR 1+ x:                     ~ get hr, add 1 and assign
(                               ~ while(1)
  &HOUR x. =                    ~ cmp current hr, stored hr
  [                             ~ if same
    #B;                           ~ backspace
    "dary"36!'                    ~ print this string and a !
    0^                            ~ exit cleanly
  ]                             ~ fi
  &MIN 59 - &ABS !              ~ get min, subtract from 59, abs & print
  ":"                           ~ record sep
  &SEC 59 - &ABS !              ~ same for second
  #B;                           ~ backspace
)
$B 8!' 8 !' 8 !' 8 !' 8 !'@     ~ backspace 5*
$                               ~ \bye

नमूना:

$ mouse legend.m02
Legen... wait for it... 20:32

देखें, यह अगले घंटे के लिए अपडेट-इन-प्लेस काउंटडाउन टाइमर है! यह लूप का अच्छा उपयोग करता है, जो यहां तक ​​कि कुछ भी नहीं कर रहा है एक कोर पर कब्जा करेगा।


1

बेसिक, 90 बाइट्स

Print"Legen... wait for it...":x$=Left(Time,2):Do:Loop Until x$<>Left(Time,2):Print"dary!"

सीधा, उपसर्ग और निहित Endबयान के प्रकार का उपयोग करते हुए । लागत यह है कि यह केवल FreeBasic बोली में काम करता है fblite


1

Befunge 98 - 69 63 बाइट्स

 v
v>a"...ti rof tiaw ...negeL<ETB>"k,
>"EMIT"4(MS+_"!yrad"5k,@

कोड में एक unprintable वर्ण होता है ( <ETB>unprintables के रूप में प्रतिनिधित्व कोड ब्लॉकों में नहीं दिखता है)। इसका चरित्र कोड 23 (एक एंड ट्रांसमिशन ब्लॉक चरित्र ) है।

चेतावनी: पूर्ववर्ती कोड एक व्यस्त लूप में चलेगा जिसमें स्टैक प्रत्येक बड़ा दोहराव प्राप्त करेगा और इस प्रकार बड़ी मात्रा में मेमोरी का उपभोग कर सकता है।


1

जेली , 48 47 बाइट्स , गैर-प्रतिस्पर्धात्मक

1 बाइट के लिए धन्यवाद एरिक गोल्फर (संपीड़न में एक शब्द के रूप में "पैर" का उपयोग करें)

“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»Ṅø3ŒTṣ”:V_@59ḅ60‘œS@“dary!”

TryItOnline! या("मिमी: एसएस") केहार्ड कोडित समय-स्वरूपित-स्ट्रिंग के साथ एक परीक्षण संस्करण चलाएं“59:57”

जैली की पहली प्रतिबद्धता डेनिस द्वारा बनाई गई थी जब उन्होंने इस चुनौती को बनाया था, मुझे यकीन नहीं है कि इस कोड ने पहली बार किस तारीख को काम किया होगा, लेकिन यह किसी भी मामले में गैर-प्रतिस्पर्धात्मक है।
लेखन के समय, स्वरूपित स्ट्रिंग के माध्यम से उस समय तक पहुंचने का केवल एक तरीका है ŒT

यह कोड गणना करता है कि कब तक इंतजार करना है और फिर सोना है। कहा जाता है, तो कम से hh:00:00इसके लिए इंतजार कर रहा है 3600सेकंड: यह धर्मान्तरित "00:00"करने के लिए [0,0]तो घटा से कि 59उपज के लिए [59,59], धर्मान्तरित कि आधार साठ से देने के लिए 3599है, तो के कुल प्रतीक्षा अवधि के लिए एक कहते 3600सेकंड।

शायद एक लूप बनाया जा सकता है; या "लेजेंडरी" शब्द का उपयोग करते हुए एक संपीड़ित स्ट्रिंग किसी भी तरह से उपयोग किया जा सकता है?

“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»Ṅø3ŒTṣ”:V_@59ḅ60‘œS@“dary!” - Main link: no arguments
“ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»                            - compressed "Legen... wait for it..."
                    Ṅ                           - print z + '\n', return z
                     ø                          - niladic chain separation
                      3ŒT                       - '011' (3) time formatted string = "mm:ss"
                         ṣ”:                    - split on ':' -> ["mm","ss"]
                            V                   - eval -> [m,s]
                             _@59               - subtract from 59 - > [59-m, 59-s]
                                 ḅ60            - convert from base 60 -> 60*(59-m)+(59-s)
                                    ‘           - increment -> 60*(59-m)+(59-s) = y
                                        “dary!” - "dary!" = x
                                     œS@        - sleep y seconds then return x
                                                - implicit print

1
के “ÇỴġƒḃhlḂṀ⁷*Ḣ¡w*Jḷv»बजाय का उपयोग करें “¤ßƇṪOƭ!½ȯƤxEẹ<Ȯ¹z7⁷»Leg(from Legen) भी एक शब्द है :) इसके अलावा, यह उत्तर अमान्य है, क्योंकि यह मिनट और सेकंड दोनों पर निर्भर करता है 00। आपको 4ŒTइसके बजाय कुछ करना चाहिए , क्योंकि एक नियम है जो कहता है कि,In the event that the program is started in the first second of a full hour, it should it wait for the next full hour.
एरिक द आउटगॉल्फ

कूल, "लेग" एक बाइट बचाता है, धन्यवाद। हालाँकि, लिंक तब काम करता है जब उसे बुलाया जाता है 00:00क्योंकि यह उस स्थिति के लिए परीक्षण नहीं कर रहा है - यह गणना करता है कि कितने सेकंड तक अगले "00:00"और फिर इंतजार करता है। तो यह बदल जाएगा "00:00"करने [0,0]से घटाना 59उपज को [59,59]परिवर्तित कि आधार साठ से प्राप्त करने के लिए 3599और फिर एक जोड़ने प्राप्त करने के लिए 3600(के साथ परीक्षण संस्करण का उपयोग कर परीक्षण "00:00"के स्थान पर "59:57")
जोनाथन एलन

1
ओह। ऐसा लगता है कि मैं लंबे जेली कोड नहीं पढ़ सकता हूं, और यह कि मैं हर किसी के उपयोग और अपेक्षाओं को नहीं जान सकता हूं :) हालांकि, स्पष्टीकरण में, मुझे लगता है कि इसके बजाय 60*(59-m)+(59-s)होना चाहिए 60*(59-m)+(59-s)+1, दूसरी बार ऐसा प्रतीत होता है?
एर्ग आउटफोलर

कोई समस्या नहीं - टिप्पणी मैं कभी भी लिखा है स्पष्ट नहीं है।
जोनाथन एलन

ठीक है, अगर आप परेशानी नहीं उठा सकते, तो मैं इसे संपादित कर सकता हूं। इसके अलावा, मैं x / y को बाएँ / दाएँ के रूप में करने की सलाह sleep x seconds then return yदूंगा , और बस यह कह <dyad>@सकता हूँ कि -बड़े हुए स्वैप के साथ एक अन्य रंजक के रूप में परिभाषित किया जा सकता है।
को आउटगोल्फर को एरिक करें

1

मैथॉल्फ , 39 बाइट्स

"Legen... wait for it..."pÆt♪/╚÷▼"dary!

इसे ऑनलाइन आज़माएं!

लगभग हरा दिया अजगर ...

व्याख्या

Æ     ▼  Repeat the next 5 characters while false
 t       push unix time in milliseconds
  ♪/     divide by 1000
    ╚÷   check if divisible by 3600 (tio solution has 3 in its place)

"लगभग"? ऐसा लगता है कि आपने किया।
पैट्रिक रॉबर्ट्स

@PatrickRoberts 36 बाइट्स का एक और पाइथ सॉल्यूशन है, जो कंप्रेस्ड स्ट्रिंग्स और अन्य ट्रिक्स के साथ भी नहीं मिल सका।
10

ओह, वह एक। यह गलत है, टिप्पणी को देखें।
पैट्रिक रॉबर्ट्स

@PatrickRoberts मैं "00:00 पर चलने पर एक घंटे इंतजार करना चाहिए" मानदंड पर भी विफल हो सकता है, लेकिन मैं इसे एक ही बाइट की गिनती के साथ 3600000 से विभाज्य मिलीसेकंड में यूनिक्सटाइम को जांचने के लिए बदल सकता हूं। चूंकि पहले प्रिंट से अधिक लेना चाहिए। मिलीसेकंड, इसे हमेशा काम करना चाहिए।
अधिकतम

0

पायथ - 36 बाइट्स

थोड़ी देर के लूप के साथ मिनट तक इंतजार होता है।

"Legen... wait for it..."W.d7)"dary!

11
आपको मिनट और सेकंड 0 तक प्रतीक्षा करने की आवश्यकता है, और यदि कार्यक्रम चलाया जाता है तो एक पूरा घंटा भी प्रतीक्षा करें:00:00
lirtosiast

0

जावा, 136 बाइट्स

class a{void A(){System.out.println("Legen... wait for it...");while(System.currentTimeMillis()%3600000!=0);System.out.print("dary!");}}

अंतिम पूर्ण घंटे के बाद से कितने मिलीसेकंड पास हुए, यह System.currentTimeMillis()3,600,000 mod का परिणाम है ।

समतुल्य अखंड कार्यक्रम 159 बाइट लंबा है:

interface a{static void main(String[]A){System.out.println("Legen... wait for it...");while(System.currentTimeMillis()%3600000!=0);System.out.print("dary!");}}

0

QBIC , 58 बाइट्स

?@Legen... wait for it...|#Dary!|{~mid$$|(_d,4,2)=@00||_XB

व्याख्या

?@Legen... wait for it...|     Define string literal "Leg[..]it..." and print it
#Dary!|                        Define string B as "Dary!", but don't use it yet
{                              Opens an indefinite DO loop
~mid$$|(...)=@00|              Translates to IF MID$(...) = C$, where C$ is "00"
    The MID$ takes two characters, starting from pos 4, from the system's time (_d)
    So, if the string "11:00" has "00" starting at pos 4,
_XB                            Terminate the program and print string B
(The DO loop and the IF are closed implicitly)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.