अपना डेथ नोट लिखिए


14

किरा को आपकी मदद की जरूरत है!


इनपुट प्रारूप:

Date [and/or Time]
Name
Gender
Reason

आउटपुट स्वरूप:

<Last Name, First Name> <will die/died> on the <DD><st/nd/rd/th> of <MMM, YYYY> [at <hh:mm:ss TT>].
<He/She> <will die/died> of <Reason>.


विवरण, विवरण:


आपके कार्यक्रम में कम से कम निम्न तिथि इनपुट स्वरूपों के लिए होनी चाहिए:

9 November 2003
9/11/2003
November 9, 2003

समय प्रारूप:

hh tt
hh TT
hh:mm tt
hh:mm TT
hh:mm:ss tt
hh:mm:ss TT
HH
HH:mm
HH:mm:ss

निम्नलिखित नाम इनपुट प्रारूप:

first        // Stephen
last         // Harper
first last   // Stephen Harper
last, first  // Harper, Stephen


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


इनपुट:

2 September 1973
J.R.R. Tolkien
Male
pneumonia

आउटपुट:

टोल्किन, जेआरआर का निधन 2 सितंबर, 1973 को हुआ था।

निमोनिया से उनकी मृत्यु हो गई।


अस्वीकरण: यदि वह वास्तव में इस तारीख को मर जाता है, तो यह कीरा की गलती है, मेरी नहीं।

अद्यतन: स्टीफन हार्पर की सूचीबद्ध तिथि पर मृत्यु नहीं हुई

इनपुट:

21/12/12 23:59:59             // DD/MM/YY HH:mm:ss
Harper, Stephen               // Last, First
Unknown                       // Gender
a heart attack for no reason  // Reason

आउटपुट:

हार्पर, स्टीफन 21 दिसंबर, 2012 को रात 11:59:59 पर मर जाएगा।

हार्पर, स्टीफन बिना किसी कारण के दिल का दौरा पड़ने से मर जाएंगे।



बक्शीश:

July 21, 1969 02:56:15 GMT
Armstrong, Neil
Male
poisoned moon cheese

--

January 19, 2038 03:14:08 GMT
Everyone
Unknown
Y2K38

इनपुट <st/nd/rd/th>के DDलिए अंत में जोड़ें ।


अहा मैं इस श्रृंखला को पढ़ना अभी समाप्त कर रहा हूं: क्या तब "दिल का दौरा" नहीं होना चाहिए "बिना किसी कारण के"?
राय-

उम, 2 सितंबर को 2/9/11 है, 2/7/11 नहीं;)
Ry-

क्या लिंग का आउटपुट पर कोई प्रभाव नहीं पड़ता है?
पीटर ओल्सन

इसके अलावा, क्या हमें 1970 से पहले की तारीखों को स्वीकार करना होगा?
पीटर ओल्सन

5
हम DD / MM / YYYY और MM / DD / YYYY के साथ इनपुट के बीच अंतर कैसे करते हैं?
पीटर ओल्सन

जवाबों:


6

जावास्क्रिप्ट (561)

यह संभवतः काफी कम हो सकता है, लेकिन यहाँ जाता है:

i=i.split("\n");d=new Date(i[0]);t=d.getDate();z=t%10;t+=z==1?"st":z==2?"nd":z==3?"rd":"th";m=['January','February','March','April','May','June','July','August','September','October','November','December'][d.getMonth()];y=d.getFullYear();a=d.getHours();b=d.getMinutes();c=d.getSeconds();l=a&&b&&c?" at "+a+":"+b+":"+c:"";g=d>new Date()?"will die":"died";n=i[1].split(" ");n[1]?n[0][n[0].length-1]==","?n=i[1]:n=n[1]+", "+n[0]:n[0];s=i[2]=="Male"?"He":i[2]=="Female"?"She":n;document.write(n+" "+g+" on the "+t+" of "+m+", "+y+l+".<br>"+s+" "+g+" of "+i[3]+".");

नमूना I / O:

2 September 1973
J.R.R. Tolkien
Male
pneumonia

टोल्किन, जेआरआर का निधन 2 सितंबर, 1973 को हुआ। निमोनिया से उनकी मृत्यु हो गई।

January 19, 2038 03:14:08 GMT
Everyone
Unknown
Y2K38

सभी की मृत्यु 18 जनवरी, 2038 को 21: 14: 8 बजे होगी। हर कोई Y2K38 से मर जाएगा।

इसे JsFiddle पर आज़माएं


बस इशारा करना चाहता हूँ कि i="9 November 2003 03:14:08 GMT\nDouglas Adams\nMale\nI forgot";मुझे देता है 8th of November
मतीन उल्हाक

4
@ मंटू यह इसलिए है क्योंकि यह आपके टाइमज़ोन को समायोजित करता है। यदि आप जीएमटी समयक्षेत्र में रहते हैं, तो यह आपको 9 वां स्थान देना चाहिए।
पीटर ओल्सन

अगर मैं अपने जन्मदिन पर मर जाऊं तो मैं आपको दोषी ठहराऊंगा। : P
nyuszika7h

5

VB.NET, 727 695

ठीक है, थोड़ा गोल्फ। की आवश्यकता है Option Strict Off

Module M
Sub Main
Dim d=Date.Parse(Console.ReadLine),n=Console.ReadLine,o=Date.Now,g=Console.ReadLine,r=Console.ReadLine,i=n.IndexOf(" "),f=d.Day Mod 10+(d.Day\10=1)*5,a=Array.IndexOf("male|female|he|she|him|her|guy|girl|boy|lady|man|woman".Split("|"), g.ToLower),b="|st|nd|rd".Split("|"),m="|January|February|March|April|May|June|July|August|September|October|November|December".Split("|")
If n.IndexOf(",")<0 Then n=n.Substring(i+1)&", "&n.Substring(0,i)
g=If(a<0,n,If(a Mod 2,"She","He"))
Console.Write("{0} {11} on the {1}{2} of {3}, {4} at {5}:{6:00}:{7:00}.{8}{9} {11} of {10}.",n,d.Day,If(f<4,b(f),"th"),m(d.Month),d.Year,d.Hour,d.Minute,d.Second,vbCrLf,g,r,If(o<d,"will die","died"))
End Sub
End Module

यह सभी परीक्षण मामलों में तारीखों को स्वीकार करता है, और कई अन्य प्रारूपों के लिए धन्यवाद Date.Parse। यह कई लिंगों को स्वीकार करता है (जैसा कि आप देख सकते हैं)। यदि किरा केवल व्यक्ति का पहला या अंतिम नाम रखने का फैसला करता है, तो कार्यक्रम क्रैश हो जाएगा।


लगता है कि आप MonthName(d.Month)कॉल के साथ अपने विभाजन तर्क को बदलकर काफी कुछ बाइट्स छोड़ने में सक्षम हो सकते हैं
टेलर स्कॉट

2

CSharp - 463 वर्ण

void Main(){Func<String>c=()=>Console.ReadLine();var d=DateTime.Parse(c());var n=c();if(!n.Contains(",")&&n.Contains(" "))n=n.Split(' ')[1]+", "+n.Split(' ')[0];n+=" ";var g=c().ToLower();g=g.Contains("male")?g.Replace("female","She").Replace("male","He"):"They";var r=c();var f=(DateTime.Now<d);Console.Write(String.Format(n+"{0} on the {1} {2}\n{3} {0} of {4}",(f?"will die":"died"),d.ToString("dddd 'of' MMMM, yyyy"),d.Date==d?"":d.ToString("hh:mm:ss"),g,r));}

1

PHP, 509 474 462 461 अक्षर

<?for($l=0;$l<4;)$i[$l++]=chop(fgets(STDIN));
putenv('TZ=GMT');
$t=strtotime(preg_match("/(\d+)\/(\d+)\/(\d+)(.*)/",$i[0],$q)?"$q[1]-$q[2]-".($q[3]<100?19+1*($q[3]<70):"").$q[3].$q[4]:$i[0]);
$z=$t<time()?" died":" will die";
$f="jS \of F, Y".($t%86400?" \a\\t g:i:s A":"");
$n=strpos($i[1],',')?$i[1]:explode(" ",$i[1]);
if(is_array($n))$n=$n[1]!=""?$n[1].", ".$n[0]:$n[0];?>
<?=$n."$z on the ".date($f,$t)."\n\n".($i[2][0]==M?He:($i[2][0]==F?She:$n))."$z of ".$i[3];

मैंने प्रत्येक के बाद नई कड़ियाँ जोड़ी हैं, ;लेकिन उन्हें नहीं गिना है क्योंकि उन्हें वहाँ रहने की आवश्यकता नहीं है।
क्या कोड 19 जनवरी 2038 03:14:07 से आगे की तारीखों को संभालता है, यह इस बात पर निर्भर करता है कि यह 64 बिट मशीन पर चलाया गया है या नहीं।


1

VBA, 384 366 बाइट्स

golfed

पूर्ण subदिनचर्या जो अपेक्षित प्रकार का इनपुट लेती है Variant\Stringऔर VBE तत्काल विंडो से संबंधित मृत्यु संदेश को आउटपुट करती है

नोट: VBA Windows API फ़ंक्शंस घोषित किए बिना Timezones को संभालने में असमर्थ है, इसलिए ये प्रश्न के लिए आवश्यक नहीं हैं, उन्हें बाहर रखा गया है

Sub x(d,n,g,r)
e=CDate(d)
f=Day(e) Mod 10
w=IIf(e>Now," will die"," died")
i=InStr(1,n," ")
n=IIf(InStr(1,n,","),n,Mid(n,i+1)&", "&Mid(n,1,i-1))
g=LCase(g)
Debug.?n;w" on the "Day(e)Split("th|st|nd|rd","|")(IIf(f>3,0,f))" of "MonthName(Month(e))", "Year(e)IIf(InStr(1,d,":")," at "&TimeValue(d),"")"."vbCr;IIf(g="male","He",IIf(g="female","She",n))w" of "r".
End Sub

बोनस वेरिसन, 394 376 बाइट्स

उपर्युक्त का थोड़ा संशोधित संस्करण जो टाइमज़ोन के अपवाद के साथ बोनस मामलों के सभी को संभालता है (सुधारों को संभालने के लिए सुधार)

Sub x(d,n,g,r)
e=CDate(d)
f=Day(e) Mod 10
i=InStr(1,n," ")
w=Space(0 ^i)&IIf(e>Now,"will die","died")
n=IIf(InStr(1,n,",")^i,n,Mid(n,i+1)&", "&Mid(n,1,i))
g=LCase(g)
Debug.?n;w" on the "Day(e)Split("th|st|nd|rd","|")(IIf(f>3,0,f))" of "MonthName(Month(e))", "Year(e)IIf(InStr(1,d,":")," at "&TimeValue(d),"")"."vbCr;IIf(g="male","He",IIf(g="female","She",n))w" of "r".
End Sub

प्रयोग

उदाहरण समस्याओं के इनपुट और आउटपुट अनुक्रम जैसा कि VBE तत्काल विंडो से देखा गया है

?Now
01-Jun-17 1:59:35 PM

x "2 September 1973", "J.R.R. Tolkien", "Male", "pneumonia"
Tolkien, J.R.R. died on the 2nd of September, 1973.
He died of pneumonia.

x "21/12/12 23:59:59", "Harper, Stephen", "Unknown", "a heart attack for no reason"
Harper, Stephen died on the 21st of December, 2012 at 11:59:59 PM.
Harper, Stephen died of a heart attack for no reason.

x "July 21, 1969 02:56:15", "Armstrong, Neil", "Male", "poisoned moon cheese"
Armstrong, Neil died on the 21st of July, 1969 at 2:56:15 AM.
He died of poisoned moon cheese.

## Using Bonus Version

x "January 19, 2038 03:14:08","Everyone","Unknown","Y2K38"
Everyone will die on the 19th of January, 2038 at 3:14:08 AM.
Everyone will die of Y2K38.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.