अंक तिथि सीमा


16

नोट: चूंकि मैं स्वयं डच हूं, सभी तिथियां डच dd-MM-yyyyप्रारूप में चुनौती विवरण और परीक्षण मामलों में हैं।

चुनौती:

इनपुट्स:
प्रारंभ दिनांक s ; अंतिम तिथि e ; अंक n

आउटपुट:
सीमा के भीतर सभी तिथियों [s,e] (दोनों पक्षों पर सहित) है, जो होते हैं n उनके तारीख में अद्वितीय अंक की राशि।

उदाहरण:

इनपुट्स: प्रारंभ तिथि 12-11-1991:; अंतिम तिथि 02-02-1992:; अंक:4

आउटपुट:
दिनों / महीनों के लिए अग्रणी 0s के साथ:

[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]

0s दिनों / महीनों के लिए अग्रणी बिना:

[20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]

चुनौती नियम:

  • इनपुट और आउटपुट दिनांक किसी भी उचित (दिनांक-) प्रारूप में हो सकते हैं। किसी भी dMyप्रारूप में एक स्ट्रिंग के रूप में हो सकता है (वैकल्पिक विभाजक सहित), तीन पूर्णांकों की सूची, आपकी भाषा की मूल दिनांक-वस्तु, आदि। आउटपुट एक सूची / सरणी / स्ट्रीम हो सकती है, जिसे STDOUT में मुद्रित किया जा सकता है, एक एकल सीमांकित स्ट्रिंग, आदि।
  • आपको अपने आउटपुट में दिनों / महीनों के लिए 0s को शामिल करने या बाहर करने की अनुमति है। कृपया निर्दिष्ट करें कि आप अपने उत्तर में दोनों में से किसका उपयोग करते हैं , क्योंकि यह अलग परिणाम देगा। Ie 1-1-1991के 2 अद्वितीय अंक हैं, लेकिन 01-01-19913 अद्वितीय अंक हैं।
  • आपको लीप वर्ष और ग्रेगोरियन बनाम जूलियन कैलेंडर के मतभेदों से निपटने की जरूरत नहीं है। आप मान सकते हैं कि परीक्षण मामलों में दी गई तारीख-सीमाएं 28 फरवरी / 1 मार्च को 4 साल के लिए विभाज्य नहीं होंगी।
  • n[1,8]n=0

सामान्य नियम:

  • यह , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
    कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव संक्षिप्त उत्तर के साथ आने का प्रयास करें।
  • डिफ़ॉल्ट I / O नियमों के साथ आपके उत्तर के लिए मानक नियम लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-प्रकार, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति है। तुम्हारा फोन।
  • डिफ़ॉल्ट लूपोल्स वर्जित हैं।
  • यदि संभव हो, तो कृपया अपने कोड (यानी TIO ) के लिए एक परीक्षण के साथ एक लिंक जोड़ें ।
  • साथ ही, आपके उत्तर के लिए स्पष्टीकरण जोड़ना अत्यधिक अनुशंसित है।

परीक्षण के मामलों:

Inputs: [12-11-1991, 02-02-1992], 4
Outputs with leading 0s:    [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 01-12-1991, 02-12-1991, 09-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 01-01-1992, 02-01-1992, 09-01-1992, 10-01-1992, 11-01-1992, 12-01-1992, 19-01-1992, 20-01-1992, 21-01-1992, 22-01-1992, 29-01-1992, 01-02-1992, 02-02-1992]
Outputs without leading 0s: [20-11-1991, 23-11-1991, 24-11-1991, 25-11-1991, 26-11-1991, 27-11-1991, 28-11-1991, 30-11-1991, 3-12-1991, 4-12-1991, 5-12-1991, 6-12-1991, 7-12-1991, 8-12-1991, 10-12-1991, 13-12-1991, 14-12-1991, 15-12-1991, 16-12-1991, 17-12-1991, 18-12-1991, 20-12-1991, 23-12-1991, 24-12-1991, 25-12-1991, 26-12-1991, 27-12-1991, 28-12-1991, 31-12-1991, 3-1-1992, 4-1-1992, 5-1-1992, 6-1-1992, 7-1-1992, 8-1-1992, 10-1-1992, 13-1-1992, 14-1-1992, 15-1-1992, 16-1-1992, 17-1-1992, 18-1-1992, 20-1-1992, 23-1-1992, 24-1-1992, 25-1-1992, 26-1-1992, 27-1-1992, 28-1-1992, 31-1-1992]

Inputs: [19-09-2019, 30-09-2019], 5
Outputs (same with and without leading 0s): [23-09-2019, 24-09-2019, 25-09-2019, 26-09-2019, 27-09-2019, 28-09-2019, 30-09-2019]

Inputs: [19-09-2019, 30-09-2019], 8
Output (same with and without leading 0s): []

Inputs: [20-06-1749, 30-06-1749], 8
Outputs with leading 0s:    [23-06-1749, 25-06-1749, 28-06-1749]
Outputs without leading 0s: []

Inputs: [10-12-1969, 12-01-1970], 6
Outputs (same with and without leading 0s): [30-12-1969]

Inputs: [10-12-1969, 12-01-1970], 5
Outputs with leading 0s:    [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 02-01-1970, 03-01-1970, 04-01-1970, 05-01-1970, 06-01-1970, 08-01-1970, 12-01-1970]
Outputs without leading 0s: [10-12-1969, 13-12-1969, 14-12-1969, 15-12-1969, 17-12-1969, 18-12-1969, 20-12-1969, 23-12-1969, 24-12-1969, 25-12-1969, 27-12-1969, 28-12-1969, 31-12-1969, 2-1-1970, 3-1-1970, 4-1-1970, 5-1-1970, 6-1-1970, 8-1-1970, 12-1-1970]

Inputs: [11-11-1111, 11-11-1111], 1
Output (same with and without leading 0s): [11-11-1111]

मुझे पता है कि यह विशेष रूप से यहां मांगे गए प्रारूप का नहीं है, लेकिन मैं यहां "शब्द फैलाने" के लिए टिप्पणी करता हूं: एक इंटर्नैशनल मानक है जिसे प्रोग्रामर को तारीखों (लॉग्स, फाइलनेम आदि) के लिए उपयोग करने की कोशिश करनी चाहिए: en.wikipedia.org / wiki / ISO_8601 । (एक 'टी' का उपयोग करने के लिए (बिना टी तिथि के बिना + समय पूरी तरह से कुछ और हो सकता है) और विभाजकों का उपयोग करने के लिए निर्दिष्ट करता है, और जब कोई विभाजक का उपयोग नहीं कर सकता है [अर्थात अलग-अलग प्रकार (एक से लंबे समय तक) का प्रस्ताव करता है मानक]: मुख्य एक : YYYY-MM-DDThh:mm:ss.mmm +hh:mm, hh: mm आपके लोकेल का समय UTC से ऑफसेट होता है।)
ओलिवियर दुलैक

जवाबों:


2

जाप , 23 बाइट्स

यूनिक्स टाइमस्टैम्प के रूप में तारीख इनपुट लेता है, 0आपके लोकेल पर निर्भर स्वरूपण और अग्रणी एस के साथ तार की एक सरणी को आउटपुट करता है । Japt v2 में 1 बाइट छोटी होगी लेकिन Dateवस्तुओं को स्ट्रिंग्स में परिवर्तित करने पर एक बग प्रतीत होता है ।

òV864e5@ÐX s7Ãf_¬â ʶWÄ

कोशिश करो

òV864e5@ÐX s7Ãf_¬â ʶWÄ     :Implicit input of integers U=s,V=e & W=n
òV                          :Range [U,V]
  864e5                     :  With step 86,400,000 (24*60*60*1000)
       @                    :Map each X
        ÐX                  :  Convert to Date object
           s7               :  Convert to locale date string
             Ã              :End map
              f             :Filter
               _            :By passing each through the following function
                ¬           :  Split
                 â          :  Deduplicate
                   Ê        :  Length
                    ¶       :  Is equal to
                     WÄ     :  W+1, to account for the inclusion of the delimiting "/" or "-"


3

लाल , 93 बाइट्स

func[a b n][until[if n = length? exclude d: rejoin[a/4"-"a/3"-"a/2]"-"[print d]b < a: a + 1]]

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

0s दिनों / महीनों के लिए अग्रणी के बिना।

बहुत बुरा है कि रेड आंतरिक रूप 09-10-2019से परिवर्तित करता है 9-Oct-2019- इसलिए मुझे व्यक्तिगत रूप से दिन / महीना / वर्ष निकालने की आवश्यकता है।


मैं रेड से परिचित नहीं हूं, लेकिन ऐसा लगता है कि बहुत सारे व्हाट्सएप हैं जो इससे कट सकते हैं। मुझे माफ करना अगर मैं गलत हूँ, यद्यपि।
संयोजक

@connectyourcharger कोई समस्या नहीं है! लगता है कि कई अनावश्यक व्हाट्सएप हैं, लेकिन उन्हें टोकन को अलग करने की आवश्यकता है। Red में शब्द (पहचानकर्ता) शामिल हो सकते हैं -=+*<>?!~&, इसीलिए एक व्हाट्सएप (या (...)[...]"...") की आवश्यकता है।
गैलेन इवानोव

2

पायथन 3.8 (पूर्व-रिलीज़) , 84 बाइट्स

-6 बाइट्स ग्लोवे की बदौलत

lambda s,e,n:[d for i in range((e-s).days+1)if-len(set(d:=str(s+type(e-s)(i))))==~n]

एक अनाम फ़ंक्शन जो स्ट्रिंग की एक सूची देता है (गिनती / अग्रणी शून्य सहित) जो तीन तर्क स्वीकार करता है:

  • s, शुरू - एक datetime.dateवस्तु;
  • e, अंत - एक datetime.dateवस्तु; तथा
  • nदिनों की संख्या - एक intवस्तु।

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

नोट: जैसा कि फ़ंक्शन उन datetime.dateवस्तुओं को स्वीकार करता है जिन्हें मैंने उसके लिए आयात कोड नहीं गिना है (और datetime.timedeltaऑब्जेक्ट को आयात करने के लिए काम किया है क्योंकि यह इन इनपुट ऑब्जेक्ट के घटाव के माध्यम से अप्रत्यक्ष रूप से सुलभ है)।


1
type(obj)3 बाइट्स से छोटा है obj.__class__
ग्लोवेनी

@Gloeye भयानक धन्यवाद!
जोनाथन एलन

@Gloweye अंत में 6 बचाता है (डॉट जाता है और कोष्ठक पहले से मौजूद हैं)
जोनाथन एलन

1
मैंने अभी तक उस गहराई का विश्लेषण नहीं किया था, बस देखा __class__और एक त्वरित टिप्पणी की। हमेशा मदद करने के लिए खुश।
ग्लोवेनी

1

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

के रूप में इनपुट लेता है (n)(end)(start), जहां तारीखें मिलीसेकंड में यूनिक्स टाइमस्टैम्प के रूप में अपेक्षित हैं। प्रारूप में तारीखों की एक अलग-अलग सूची लौटाता है yyyy-mm-dd

अग्रणी 0s शामिल हैं।

n=>b=>g=a=>a>b?'':(new Set(d=new Date(a).toJSON().split`T`[0]).size+~n?'':d+' ')+g(a+864e5)

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


1
यह स्निपेट संभवतः विफल हो जाएगा यदि DST शिफ्ट हो गया (+ 864e5 उस मामले में कल नहीं हो सकता है)। लेकिन शुक्र है कि टियो यूटीसी टाइमज़ोन का उपयोग करता है जिसमें डीएसटी नहीं है। - किसी ऐसे व्यक्ति से, जो उत्पाद वेबसाइट में एक ही तर्क का उपयोग करता है और कुछ गलत होने का एहसास करता है, जब तक कि DST शिफ्ट नहीं हो जाता ...
tsh

1

PHP , 90 बाइट्स

for([,$s,$e,$n]=$argv;$s<=$e;)$n-count(count_chars($d=date(Ymd,86400*$s++),1))||print$d._;

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

यह अग्रणी 0s के साथ है। इनपुट्स कमांड तर्क हैं ( $argv) और तारीखें दिनों में यूनिक्स टाइमस्टैम्प हैं (मूल रूप से मानक सेकंड / 86400), मैंने इस प्रारूप का उपयोग किया क्योंकि हमें इस चुनौती में समय की आवश्यकता नहीं है और इसने मुझे 1 और बाइट की अनुमति दी। शुरू होने तक एक दिन जोड़ने तक रहता है और प्रारूप में $nअलग-अलग अंकों के साथ किसी भी तारीख को प्रिंट करता है।_Ymd

इसके अलावा एक 89 बाइट्स विकल्प है जो तारीखों को इनपुट के समान प्रारूप में आउटपुट करता है (दिनों में यूनिक्स टाइमस्टैम्प)।


1

जावा (JDK) , 86 बाइट्स

(s,e,n)->s.datesUntil(e.plusDays(1)).filter(d->(""+d).chars().distinct().count()==n+1)

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

मैंने अग्रणी 0एस का उपयोग करना चुना ।

क्रेडिट


1
हो सकता है कि मुझे इसे दोनों सिरों पर सम्मिलित नहीं करना चाहिए था, तो आप जावा 9 datesUntilको 103 बाइट्स के लिए इस्तेमाल कर सकते थे । ;) अच्छा उत्तर। मुझे ऐसा कुछ भी नहीं दिखाई देता, जो व्यक्तिगत रूप से गढ़ा जा सके।
केविन क्रूज़सेन 11

1
@ केविनक्रूजसेन वेल, वास्तव में, आपने गोल्फ का बहुत अच्छा तरीका दिया है! बस जोड़ें .plusDays(1)और निकालें .forEach(System.out::println)और यह एक बहुत ही गोल्फ का जवाब है क्योंकि जैसा कि आपने लिखा था, मूल्य वस्तुओं और धाराओं के रूप में तारीखों को वापस किया जा सकता है। ;-) मेरे पास कोई सुराग नहीं था जो datesUntilअस्तित्व में भी था! इसके लिए धन्यवाद :-)
ओलिवियर ग्रेजायर

Woops, अपने खुद के नियमों के बारे में भूल गए, जिसमें धारा रिटर्न की अनुमति है, हाहा XD मैं एक बेवकूफ हूँ। लेकिन खुशी है कि मैं अपनी मूर्खता के साथ आपकी मदद कर सका। ; पी
केविन क्रूज़सेन

1

रूबी -rdate , 54 बाइट्स

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

->a,b,n{(a..b).select{|d|d.to_s.chars.uniq.size==n+1}}

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


1

C # (विजुअल C # इंटरएक्टिव कंपाइलर)

0s, 104 , 103 बाइट्स का नेतृत्व किए बिना

(s,e,n)=>new int[(e-s).Days+1].Select((x,i)=>s.AddDays(i)).Where(x=>$"{x:yyyMd}".Distinct().Count()>=n)

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

अग्रणी 0s, 106 105 बाइट्स के साथ

(s,e,n)=>new int[(e-s).Days+1].Select((x,i)=>s.AddDays(i)).Where(x=>$"{x:yyyMMdd}".Distinct().Count()>=n)

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


आप x =>$"-1 के लिए अपने दोनों संस्करणों में स्थान को हटा सकते हैं । :)
केविन क्रूज़सेन

@KevinCruijssen आह बकवास धन्यवाद एक्स) मुझे यकीन है कि कोई व्यक्ति एक छोटे से समाधान के साथ भी आ सकता है, मैं इस एक से संतुष्ट नहीं हूं
Innat3

0

कोटलीन, 119 बाइट्स

fun f(a:LocalDate,b:LocalDate,c:Long)=a.datesUntil(b.plusDays(1)).filter{it.toString().chars().distinct().count()==c+1}

प्रमुख 0s के बिना, दो में ले जाता है java.time.LocalDateऔर एक Long, एक रिटर्न Streamकी LocalDateरों


नमस्ते, CCGC में आपका स्वागत है! क्या आप इसे सत्यापित करने के लिए परीक्षण कोड के साथ एक कोशिश ऑनलाइन लिंक जोड़ सकते हैं ? इसके अलावा, मैं कोटलिन को नहीं जानता, लेकिन क्या कुछ बाइट्स को बचाने के it.toString()साथ बदलना संभव है (it+"")? मुझे पता है कि जावा या .NET C # जैसी कुछ अन्य भाषाओं में यह संभव है।
केविन क्रूज़सेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.