आज यॉल्ड में


15

Discordian कैलेंडर एक वैकल्पिक Discordians द्वारा प्रयोग किया जाता कैलेंडर है।

  1. डिसॉर्डियन वर्ष में 5 सीज़न होते हैं, जिनमें से प्रत्येक में 73 दिन होते हैं: अराजकता, कलह, भ्रम, नौकरशाही, और उसके बाद।
  2. डिसॉर्डियन वीक में 5 दिन होते हैं: स्वीटमॉर्न, बूमटाइम, पुंगेंडे, प्रिकेल-प्रिकेल और सेटिंग ऑरेंज। हर साल की शुरुआत स्वीटमॉर्न (और अराजकता में) से होती है।
  3. हर ourth साल (जो happe n ग्रेग से तालमेल एस rian छलांग हाँ आर रों), एक अतिरिक्त ay अराजकता 59 और अराजकता 60 कहा जाता है के बीच डाला जाता है सेंट Tib डे । यह डिस्कोर्डियन सप्ताह के बाहर है, जिसका अर्थ है कि सेंट टिब्‍स डे के बाद का दिन ऑरेंज, प्रिकेल-प्राइपल के एक दिन पहले होगा।
  4. ग्रेगोरियन और डिस्कोर्डियन कैलेंडर्स लाइन अप; दोनों एक ही दिन शुरू होते हैं, जिसे 1 जनवरी को ग्रेगोरियन कैलेंडर में कहा जाता है, और डिस्कोर्डियन में अराजकता 1।
  5. ग्रेगोरियन कैलेंडर में हमारी लेडी ऑफ डिस्कोर्ड (यॉल्ड 1) का पहला वर्ष 1166 ईसा पूर्व था, जिसका अर्थ है कि इस वर्ष (2017 ईस्वी) योल 3183 है।
  6. डिसॉर्डियन कैलेंडर में छुट्टियां भी होती हैं, लेकिन वे इस चुनौती के लिए महत्वपूर्ण नहीं हैं और आपको उन्हें या उनके बारे में कुछ भी आउटपुट नहीं देना चाहिए।

एक कार्यक्रम या फ़ंक्शन लिखें जो आज की तारीख में आउटपुट (या निष्पादन के समय) लौटाता है:

Today is Boomtime, the 16th day of Confusion in the YOLD 3183

प्रारूप है "Today is $day_of_the_week, the $ordinal day of $season in the YOLD $year", जहां $ day_of_the_week सप्ताह का पूंजीकृत (शीर्षक-केस) दिन है, $ ordinal (1, 2nd, 3rd, 4th, ...) के रूप में सीजन का दिन है, $ सीज़न पूंजीकृत है। (शीर्षक-केस) सीज़न, और $ वर्ष वर्ष है।

यदि आपका प्रोग्राम या फ़ंक्शन सेंट टीबीज़ डे पर निष्पादित होता है, तो इसके बजाय आउटपुट या रिटर्न होना चाहिए "Today is St. Tib's Day in the YOLD $year"

नियम:

  • मानक खामियां लागू होती हैं।
  • यदि आपकी पसंद की भाषा में वर्तमान तिथि प्राप्त करने का कोई तरीका नहीं है, तो यह इनपुट के रूप में किसी भी उचित प्रारूप में वर्तमान ग्रेगोरियन तिथि ले सकती है।
  • यह , सबसे छोटा कोड (प्रति भाषा) जीतता है।
  • अनुगामी व्हाट्सएप ठीक है।
  • पूंजीकरण मामलें।
  • ddateकिसी भी तरह से कॉल करना प्रतिबंधित है
  • आपके कार्यक्रम को 3067 से 3265 योल (1901 से 2099 ईस्वी) तक काम करने की गारंटी दी जानी चाहिए, इस सीमा के बाहर यह सही मान दे सकता है

यह सभी देखें:


4
कलह एक अच्छा त्वरित संदेश भेजने वाला ग्राहक है
ओकेक्स

1
मुझे लगता है कि आज कन्फ्यूजन का 16 वां दिन है? उदाहरण किस तारीख को दर्शाता है?
user202729


1
@ user202729 हां, उदाहरण में तारीख तब से है जब मैंने मूल रूप से चुनौती लिखी थी, मैं इसे आज की तारीख दिखाने के लिए अपडेट करूंगा, जो वास्तव में भ्रम का 16 वां दिन है।
L3viathan

1
उस मामले में @ L3viathan (बड़े मूल प्रकार के साथ एक भाषा का उपयोग करने वालों के लिए) क्या आप स्पष्ट कर सकते हैं) कि कैसे सदी के वर्षों की बारी को संभालना है जो कि कलहपूर्ण विरोधाभासों के "हर 4 वें वर्ष" के रूप में ग्रेगोरियन कैल में छलांग नहीं लगा रहे हैं। "gregorian के साथ संरेखित करता है" b) कैसे gregorian cal की शुरूआत से पहले वर्षों को संभालना है। मैं अधिकतम सीमा का सुझाव दे रहा था जिसे आपके वर्तमान युक्ति द्वारा ठीक से परिभाषित किया गया है। यदि आप इसे अस्वीकार करते हैं, तो आपको परिभाषित करना चाहिए कि उस सीमा के बाहर कार्यक्रम को क्या करना चाहिए। साथ ही आपको मौजूदा उत्तर को अमान्य करने से बचना चाहिए। en.wikipedia.org/wiki/Gregorian_calendar
Level River St

जवाबों:


5

गणितज्ञ, ४०३ 401 बाइट्स

संस्करण बाइट्स की संख्या की गणना करने के लिए: (रिक्त स्थान और नए अंक हटाए गए - दुर्भाग्य से यह हिस्सा काफी कठिन है)

"Setting Orange"["Sweetmorn","Boomtime","Pungenday","Prickle-Prickle"][[#~Mod~5]]<>", the "<>SpokenString@p[[Mod[#,73,1]]]~StringExtract~2<>" day of "<>{"Chaos","Discord","Confusion","Bureaucracy","The Aftermath"}[[⌈#/73⌉]]&;
Row@{"Today is ",#2," in the YOLD ",1166+#}&[#,If[4∣#,If[#2>60,%[#2-1],If[#2<60,%@#2,"St.Tib's Day"]],%@#2]]&@@FromDigits/@DateString@"ISOOrdinalDate"~StringSplit~"-"

पढ़ने के लिए संस्करण:

"Setting Orange"["Sweetmorn", "Boomtime", "Pungenday", 
     "Prickle-Prickle"][[#~Mod~5]] <>
   ", the " <>
   SpokenString@p[[Mod[#, 73, 1]]]~StringExtract~2 <>
   " day of " <>
   {"Chaos", "Discord", "Confusion", "Bureaucracy", 
     "The Aftermath"}[[Ceiling[#/73]]] &;
Row@{
      "Today is ",
      #2,
      " in the YOLD ",
      1166 + #
      } &[#,
   If[4 ∣ #,
    If[#2 > 60, %[#2 - 1],
     If[#2 < 60, %@#2, "St.Tib's Day"]
     ], %@#2
    ]] & @@ FromDigits /@ DateString@"ISOOrdinalDate"~StringSplit~"-"

जवाब की जगह मनमाना तारीख के साथ परीक्षण किया जा सकता DateString@"ISOOrdinalDate"द्वारा DateString[{year,month,day},"ISOOrdinalDate"]के लिए year, monthऔर dayसंख्या द्वारा बदल दिया।


मैं गणितज्ञ कोड का परीक्षण कैसे कर सकता हूं?
L3viathan

6
"वोट नहीं बिलिन?"
जोनाथन एलन

4

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

लघु संस्करण:

import time
y,d=time.gmtime()[0::7]
t="Today is "
o=" in the YOLD "+`y+1166`
if y%4<1 and d>59:
 if d==60:print"%sSt. Tib's Day%s%d"%(t,o);quit()
 d-=1
s,e=divmod(d-1,73)
print t+["Sweetmorn","Boomtime","Pungenday","Prickle-Prickle","Setting Orange"][(d-1)%5]+", the %d%s day of %s"%(e+1,'tsnrthtddh'[min(e*(e/10-1 and 1)%10,4)::5],["Chaos","Discord","Confusion","Bureaucracy","The Aftermath"][s]+o)

लंबा, अधिक पठनीय रूप:

import time

# now = time.strptime("2017.06.11", "%Y.%m.%d")  # for testing
now = time.gmtime()
year, day_of_year = now[0::7]
leapyear = year % 4 < 1
today = "Today is "
yold = " in the YOLD " + `y+1166`

if leapyear and day_of_year>59:
    if day_of_year==60:
        print "%sSt. Tib's Day%s%d"% (today, yold)
        quit()  # dirty, but ... hey.
    day_of_year -= 1
season, day = divmod(day_of_year-1,73)

print today + \
    ["Sweetmorn", "Boomtime", "Pungenday", "Prickle-Prickle", "Setting Orange"][(day_of_year-1)%5] + \
    ", the %d%s day of %s" % (
        day+1,
        'tsnrthtddh'[min(day*(day/10-1 and 1)%10,4)::5],
        ["Chaos", "Discord", "Confusion", "Bureaucracy", "The Aftermath"][season] + yold
    )

अद्यतन: महान @Neil और @EriktheOutgolfer की मदद से फिक्स्ड। लेकिन @ जोनाथन का जवाब छोटा है।


2
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ पर आपका स्वागत है!
दादा

3
क्या यह 21 वें, 22 वें, 23 वें ... 73 वें के लिए सही प्रत्यय का उत्पादन करता है? @ L3viathan y%4<1काम करेगा, लेकिन मुझे नहीं लगता कि 1-y%4होगा।
नील


@EriktheOutgolfer क्या आप eवैरिएबल को समाप्त करके अन्य 4 बाइट्स नहीं बचा सकते हैं ?
नील

PPCG में आपका स्वागत है! अच्छी पहली पोस्ट। मैं आपको यहाँ और वहाँ से थोड़ा हटकर देने की योजना बना रहा था , लेकिन ध्यान दिया और प्रत्यय की समस्या को ठीक कर दिया और कोड को जितना मैंने सोचा था कि मैंने अपने संस्करण को प्रस्तुत करना समाप्त कर दिया था, से अधिक गोल्फ को तैयार किया।
जोनाथन एलन

2

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

नोट: यह जैमोन के उत्तर का एक गोल्फ (और फिक्स) है - मैंने मूल रूप से सोचा था कि मैं एक टिप्पणी प्रस्तुत करूंगा, लेकिन मैं अंत में काफी बदल गया हूं (साथ ही दिन-प्रत्यय तय हो गए हैं)।

import time
y,d=time.gmtime()[::7]
t="Today is %s in the YOLD "+`y+1166`
r=y%4<1<59<d
d-=r+1
e=d%73
print t%[["Sweetmorn","Boomtime","Pungenday","Prickle-Prickle","Setting Orange"][d%5]+", the %d%s day of "%(e+1,'snrttddh'[min(e%10+3*(e/9==1),3)::4])+["Chaos","Discord","Confusion","Bureaucracy","The Aftermath"][d/73],"St. Tib's Day"][(r*d)==58]

इसे ऑनलाइन आज़माएं! या कुछ हार्ड-कोडित परीक्षण तिथियां देखें


मुझे नहीं लगता कि e%10*(e/9!=1)काम करता है?
नील

नहीं, तो यह छपेगा 11st, 12stऔर 13st(जब e/91 शून्य से गुणा हो जाए और minवह शून्य
जोनाथन एलन

2

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

f=(d=new Date(),a=d.getDate()-1,y=d.getFullYear()+1166)=>d.getMonth()?f(d,a+d.getDate(d.setDate(0))):`Today is ${y%4-2|a<59||59-a--?`Sweetmorn,Boomtime,Pungenday,Prickle-Prickle,Setting Orange`.split`,`[a%5]+`, the ${d=a%73+1}${[,`st`,`nd`,`rd`][d-10-(d%=10)&&d]||`th`} day of `+`Chaos,Discord,Confusion,Bureaucracy,The Aftermath`.split`,`[a/73|0]:`St. Tib's Day`} in the YOLD `+y

एक वैकल्पिक दिनांक पैरामीटर लेता है। Ungolfed:

function discordian(date) {
    var a = date.getDate();
    while (date.getMonth()) {
        date.setDate(0);
        a += date.getDate();
    }
    if (date.getYear() % 4 == 0) {
        if (a == 60) return "Today is St. Tib's day in the YOLD " + (date.getYear() + 1166);
        if (a > 60) a--;
    }
    var weekday = ['Setting Orange', 'Sweetmorn', 'Boomtime', 'Pungenday', 'Prickle-Prickle'][a % 5];
    var seasonday = (a - 1) % 73 + 1;
    var ordinal = seasonday % 10 == 1 && seasonday != 11 ? 'st' : seasonday % 10 == 2 && seasonday != '12' : 'nd' : seasonday % 10 == 3 && seasonday != '13' ? 'rd' : 'th';
    var season = ['Chaos', 'Discord', 'Confusion', 'Bureaucracy', 'The Aftermath'][Math.floor((a - 1) / 73)];
    return "Today is " + weekday + ", the " + seasonday + ordinal + " day of " + season + " in the YOLD " + (date.getYear() + 1166);
}

1

सी #, 392 बाइट्स

using System;s=>{var t=DateTime.Now;int d=t.DayOfYear,y=t.Year,m=d%73;return"Today is "+(DateTime.IsLeapYear(y)&d==60?"St. Tib's Day":"Sweetmorn|Boomtime|Pungenday|Prickle-Prickle|Setting Orange".Split('|')[d%5-1]+", the "+ m+(m<2|m==21|m>30?"st":m==2|m==22?"nd":m==3|m==23?"rd":"th")+" day of "+"Chaos|Discord|Confusion|Bureaucracy|The Aftermath".Split('|')[d/73])+" in the YOLD "+(y+1166);}

पूर्ण / स्वरूपित संस्करण:

using System;

class P
{
    static void Main()
    {
        Func<string, string> f = s =>
        {
            var t = DateTime.Now;
            int d = t.DayOfYear, y = t.Year, m = d % 73;

            return "Today is " + (DateTime.IsLeapYear(y) & d == 60
                   ? "St. Tib's Day"
                   : "Sweetmorn|Boomtime|Pungenday|Prickle-Prickle|Setting Orange".Split('|')[d % 5 - 1] +
                     ", the " +
                     m +
                     (m < 2 | m == 21 | m > 30 ? "st" : m == 2 | m == 22 ? "nd" : m == 3 | m == 23 ? "rd" : "th") +
                     " day of " +
                     "Chaos|Discord|Confusion|Bureaucracy|The Aftermath".Split('|')[d / 73])
                   + " in the YOLD " + (y + 1166);
        };

        Console.WriteLine(f(null));

        Console.ReadLine();
    }
}

1

पायथ , 295 बाइट्स

J.d2A<J2Kt+s<+,31 28*2t*3,30 31tH@J2=Y&&!%G4<58K!qH3=N%K73%"Today is %s in the YOLD %d",@,++@c"SweetmornZBoomtimeZPungendayZPrickle-PrickleZSetting Orange"\Z%K5%", the %d%s day of ",+N1@c"stndrdth"2h.mb,3+%NT*3q1/N9@c." yNlSFk.»&ô?Z#u!%ô6'mçM«_ôvëû¹)+¬<"\Z/K73"St. Tib's Day"q*YK59+G1166

नोट: इसमें बाइनरी शामिल है, यहां से कॉपी-पेस्ट करने के लिए सुरक्षित नहीं हो सकता है। TIO से कॉपी-पेस्ट करने का काम करना चाहिए।

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

आप .d2इस तरह (वर्ष, महीने, दिन) के 3-टपल के साथ शुरुआत में बदलकर मनमाने तारीखों का परीक्षण कर सकते हैं :(2020 2 29)

यह एक सा कष्टप्रद था क्योंकि पायथ के पास "वर्ष का दिन" प्राप्त करने का कोई तरीका नहीं है, इसलिए मुझे इसे स्वयं गणना करना पड़ा।

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