अगले "दिलचस्प" समय का पता लगाएं


9

मैं अपनी घड़ी को आज ठीक 11:11:11 पर देखने के लिए हुआ था (और आज 1/11 है; बहुत बुरा यह 2011 नहीं है), और यह मुझे सोचकर मिला: मुझे पता है! मुझे इसमें से एक कोड गोल्फ प्रश्न बनाना चाहिए! मैं बेवकूफ हूं।

वैसे भी, आपकी चुनौती एक घंटे, मिनट और दूसरे को इनपुट के रूप में लेना है, और अगले "दिलचस्प" समय का उत्पादन करना है। यहाँ, मैं इन चरणों के रूप में दिलचस्प परिभाषित करूंगा:

  1. घंटे, मिनट और दूसरे को समेटना। (उदाहरण के लिए, 4:14:14 पर, यह 41414 होगा।)
  2. एक, दो, या तीन के लगातार समूहों की जाँच करें जो पूरे स्ट्रिंग की लंबाई को फैलाते हैं। उदाहरण के लिए, मैं [41][41][4]उदाहरण समय में मिल सकता है (यदि समूह स्ट्रिंग के माध्यम से नहीं पहुंच सकता है, तो इसे काट दें जैसे मैंने इस उदाहरण में किया था)। एक और उदाहरण: प्रश्न की शुरुआत में मेरा पहला उदाहरण में समय में, यह होगा [1][1][1][1][1][1], [11][11][11]या [111][111]
  3. क्या एक लगातार समूह है जो स्ट्रिंग के माध्यम से सभी तरह से जाता है? यदि हां, तो समय "दिलचस्प है!" अन्यथा, यह नहीं है।

इनपुट किसी भी उचित प्रारूप में हो सकता है , लेकिन इसे हार्डकोड नहीं किया जाना चाहिए। आउटपुट किसी भी उचित प्रारूप में हो सकता है , और इसे इनपुट के समान प्रारूप में होने की आवश्यकता नहीं है।

यदि आप किसी कारण से नेटवर्क एक्सेस का उपयोग करते हैं, तो नेटवर्क से डाउनलोड किए गए सभी बाइट्स आपके स्कोर तक पहुँचते हैं ।

ये है ; बाइट्स में सबसे छोटा कोड जीतता है।


1
यह जनवरी है, नवंबर नहीं: P
अस्थिरता

@Volatility ओह, टाइपो :-P तय
दरवाज़े

1
मुझे नेटवर्क एक्सेस प्रतिबंध पसंद है।
काइल कानोस

1
क्या कोड को केवल 12 घंटे की घड़ी पर विचार करना चाहिए? उदाहरण के लिए, 24 घंटे की घड़ी में 14:14:14 एक दिलचस्प समय होगा, लेकिन 12 घंटे की घड़ी (2:14:14) पर इतना दिलचस्प नहीं होगा
केविन एंडरसन

जवाबों:


2

जे, ११३ ९९ ९ ०

शायद अभी भी काफी गोल्फ है।

f=:t#:[:(>:^:([:(3&g+:2&g=.[:*/]=(]$)${.)@(":@{.,3}.7":100#.1,])t#:])^:_)1+(t=.24,2$60)#.]

एक वेक्टर (h m s)को इनपुट के रूप में लेता है , और एक वेक्टर को आउटपुट के समान प्रारूप में लौटाता है।

उदाहरण:

   f 0 0 0
0 1 0
   f 4 14 14
4 14 41
   f 23 59 59
0 0 0
   f 3 14 15
3 14 31

1

हास्केल - 227223

यह करने का एक तरीका है।

    import Data.List
e _ []=False
e f s=let (h,t)=f s in t`isPrefixOf`h||h`isPrefixOf`t&&e f t
i [a,b,s]=head[t|s<-[s+1..],f<-map splitAt[1..3],let m=b+s`div`60;h=a+m`div`60;t=[h`mod`24,m`mod`60,s`mod`60],e f$concatMap show t]

उदाहरण

λ: i [11,11,11]
[11,21,1]
λ: i [4,14,14]
[4,14,41]

क्या आप एक नमूना रन पोस्ट कर सकते हैं? मैं हास्केल के बारे में पता कर रहा हूँ तो मुझे पता नहीं कैसे इनपुट / आउटपुट काम करता है, आदि :-P है
दरवाज़े

1

गणितज्ञ १२५

F=Do[#~MatchQ~{#〚-1〛..,_}&&Break@#&@Partition[(i=IntegerDigits)@f[n~i~60,100],m,m,1,a_],
{n,#~(f=FromDigits)~60+1,7^6},{m,3}]&

यह अगले दिलचस्प समय का एक पैटर्न लौटाता है:

F@{11, 11, 11}
F@{4, 14, 14}

{{1, 1, 2}, {1, 1, 2}}

{{4, 1, 4}, {4, 1, a_}}

a_ समय समाप्त होने के निशान।


1

लुआ

मुझे चार अलग-अलग समाधान मिले हैं, क्योंकि मैं कुछ आवश्यकताओं के बारे में निश्चित नहीं था।

संस्करण 1: 0s को हटाने, कमांड लाइन इनपुट और साथ ही os.time () बैकअप (315)

कम से कम:

z=arg if z[1] then y={hour=z[1],min=z[2],sec=z[3],day=1,month=1,year=1}end h,g,e,u=os.date,os.time(y),":",tonumber while 1 do g=g+1 b,c,d=u(h("%H",g)),u(h("%M",g)),u(h("%S",g)) a=b..c..d for x=1,#a/2 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>math.ceil(#a/x) then print(b..e..c..e..d)return 1 end end end end

टिप्पणियों के साथ पूर्ण संस्करण:

z=arg if z[1] then y={hour=z[1],min=z[2],sec=z[3],day=1,month=1,year=1}end --get command line arguments
h,g,e,u=os.date,os.time(y),":",tonumber --set up references, if command line arguments accepted use y else use current time
while 1 do
    g=g+1
    b,c,d=u(h("%H",g)),u(h("%M",g)),u(h("%S",g)) --get HH:MM:SS seperately (which allows removal of the zeroes with tonumber())
    a=b..c..d  --concat
    for x=1,#a/2 do  --check up to half of the string
        p=1
        for _ in a:gmatch(a:sub(1,x))do --for each match
            p=p+1  --count number of matches
            if p>math.ceil(#a/x) then print(b..e..c..e..d)return 1 end --if matches span entire string, cheer (and print in a pretty format)
        end
    end
end

अन्य संस्करण बहुत समान हैं, इसलिए मैं केवल न्यूनतम संस्करण पोस्ट करूंगा:

संस्करण 2: कोई कमांड लाइन इनपुट (239)

h,g,e,u=os.date,os.time(),":",tonumber while 1 do g=g+1 b,c,d=u(h("%H",g)),u(h("%M",g)),u(h("%S",g)) a=b..c..d for x=1,#a/2 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>math.ceil(#a/x) then print(b..e..c..e..d)return 1 end end end end

संस्करण 3: कोई 0 हटाने, कमांड लाइन इनपुट (240) के साथ

z=arg if z[1] then y={hour=z[1],min=z[2],sec=z[3],day=1,month=1,year=1}end h,g=os.date,os.time(y) while 1 do g=g+1 a=h("%H%M%S",g) for x=1,3 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>6/x then print(h("%T",g))return 1 end end end end

संस्करण 4: कोई भी फैंसी सामान (कोई 0 निष्कासन या कमांड लाइन इनपुट नहीं) (164)

h,g=os.date,os.time() while 1 do g=g+1 a=h("%H%M%S",g) for x=1,3 do p=1 for _ in a:gmatch(a:sub(1,x))do p=p+1 if p>6/x then print(h("%T",g))return 1 end end end end

उपयोग के निर्देश

एक टर्मिनल में, रन (संस्करण 1 और 3)

lua interesting.lua HOURS MINUTES SECONDS

या केवल

lua interesting.lua

यदि आप चाहते हैं कि यह सिस्टम क्लॉक से हट जाए।

क्या सुविधा पूर्णता के लिए पुरस्कार है? : पी

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