एक निश्चित अवधि के लिए, जोकरों का उपयोग करते हुए, तारीखों की सबसे छोटी सूची प्राप्त करना


13

में स्वरूपित दिनांक पर विचार करें YYYY-MM-DD। आप *दिनांक स्ट्रिंग के अंत में जोकर का उपयोग कर सकते हैं । जैसे 2016-07-2*सभी तिथियों का वर्णन करता 2016-07-20है 2016-07-29

अब, एक शुरुआत तिथि और अंतिम तिथि द्वारा दर्शाए गए अवधि पर विचार करें।

एल्गोरिथ्म को अवधि का प्रतिनिधित्व करने वाली तारीखों की सबसे छोटी संभव सूची मिलनी चाहिए।

चलो एक उदाहरण का उपयोग करें। निम्नलिखित अवधि के लिए:

  • आरंभ करने की तिथि: 2014-11-29
  • अंतिम तिथि: 2016-10-13

एल्गोरिथ्म में एक सरणी वापस आनी चाहिए जिसमें तारीखों की सूची शामिल है:

  • 2014-11-29
  • 2014-11-30
  • 2014-12-*
  • 2015-*
  • 2016-0*
  • 2016-10-0*
  • 2016-10-10
  • 2016-10-11
  • 2016-10-12
  • 2016-10-13

1
जीतने वाला उद्देश्य अस्पष्ट है। मैं इसे कोडगुल्फ़ में बदलने का सुझाव देता हूं (यानी संभवतया सबसे कम बाइट्स में काम हल करें) और हमेशा तारीखों की सबसे छोटी सूची के आउटपुट के लिए उत्तर की आवश्यकता होती है।
बिलीवॉब

शायद यह केवल इसके लिए सबसे अच्छी साइट नहीं है, यह एक सवाल है (यानी "मज़े के लिए" एक चुनौती की तुलना में "मैं रूबी ऑन रूबी ऑन रेल्स" में इस एल्गोरिथ्म को नहीं ढूंढ सकता हूं)। मैं यहाँ नया नहीं हूँ ...
राफेल

मेरा सुझाव है कि आप स्टैकओवरफ़्लो की कोशिश करें और फिर इसे एक चुनौती के बजाय एक प्रश्न के रूप में पूछें। अगर प्रतिवाद किया जाए, तो चुनौती अभी भी मेरी राय में दिलचस्प है और एक मौका (कोड गोल्फ के रूप में) का हकदार है।
बिलीवॉब

6
हाँ, मुझे लगता है कि एल्गोरिथ्म ढूंढना अभी भी मज़ेदार और चुनौतीपूर्ण है, लेकिन मुझे कोड-गोल्फ पक्ष में कोई दिलचस्पी नहीं थी ... खैर मैंने इसे रीफ़्रेश किया, टैग बदल दिए और अब मैं इस पोस्ट का अनुसरण करते हुए स्टैकओवरफ़्लो से पूछने वाला हूं। धन्यवाद!
राफेल

1
अनुवर्ती: मैंने कल Stackoverflow पर पोस्ट किया था, लेकिन आज मेरे पास रूबी में एक काम करने वाला कोड था (यह "जोकराइज़" महीनों नहीं करता है, लेकिन लगभग वहाँ है): stackoverflow.com/questions/40506639/…
राफेल

जवाबों:


1

PHP, 541 343 बाइट्स

मैं एल्गोरिथ्म को पहली जगह में काम करना चाहता था; लेकिन यह नीचे गोल्फ वास्तव में मैं उम्मीद की तुलना में अधिक मजेदार था (विशेष रूप से समर्थित तारीख और समय प्रारूपों ब्राउज़िंग )।

130 बाइट्स के बारे में तीन प्रमुख क्रियाएं बचाई गईं; लेकिन मामूली गोल्फ से 70 बाइट्स
(जो कि बड़े कदमों में से एक है, अप्रचलित है) ने बहुत मज़ा किया।

for($a=($f=strtotime)($argv[1]);!$p=$a>$z=$f($argv[2]);$a+=86400){$x=$z<$e=$f(Dec31,$a);(101<$q=date(md,$a))?$q-1001|$x?:$a=$e+$p="1*":($x?($t=$f(IX30,$a))>$z?:$a=$t+$p="0*":$a=$e+$p="*");$p?:($q%100>1|$z<($t=$f(date(Ymt,$a)))?$q%10>0&$q%100>1|$z<($t=min($t,$a+777600))?:$a=$t+$p="m-$q[2]*":$a=$t+$p="m-*");echo date("Y-".($p?:"m-d"),$a),"
";}

कमांड लाइन तर्कों से इनपुट लेता है। इसे ऑनलाइन चलाएं -nrया परीक्षण करें

टिप्पणियाँ

  • प्रिंट Y-m-3*के लिए Y-m-30; फिक्स करने के लिए 7 बाइट्स जोड़ें: |$a==$tबाद डालें 777600))
  • PHP 7.1 में चेतावनी फेंकता है; ठीक करने के लिए 5 बाइट्स जोड़ें: बदलें +$pसाथ +!$p
  • एक ब्रेकडाउन और कुछ गोल्फिंग पोस्ट किए जाने के लिए तैयार हैं;
    लेकिन मैं यह देखने के लिए थोड़ा इंतजार करता हूं कि क्या मेरे खराब होने से पहले कोई और डूब जाता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.