संयुक्त राज्य अमेरिका के राष्ट्रपति कौन थे?


56

चुनौती

30 अप्रैल, 1789 से 21 अगस्त, 2019 तक एक दिन के लिए इनपुट के रूप में एक प्रोग्राम लिखें और आउटपुट के रूप में रिटर्न करें जो उस दिन यूएसए के अध्यक्ष थे।

टिप्पणियाँ

अमेरिकी राष्ट्रपतियों की सूची के लिए , उनके नामों का प्रारूप और उनकी अध्यक्षता की अवधि, नीचे देखें:

April 30, 1789 - March 4, 1797          George Washington
March 4, 1797 - March 4, 1801           John Adams
March 4, 1801 - March 4, 1809           Thomas Jefferson
March 4, 1809 - March 4, 1817           James Madison
March 4, 1817 - March 4, 1825           James Monroe
March 4, 1825 - March 4, 1829           John Quincy Adams
March 4, 1829 - March 4, 1837           Andrew Jackson
March 4, 1837 - March 4, 1841           Martin Van Buren
March 4, 1841 - April 4, 1841           William Henry Harrison
April 4, 1841 - March 4, 1845           John Tyler
March 4, 1845 - March 4, 1849           James K. Polk
March 4, 1849 - July 9, 1850            Zachary Taylor
July 9, 1850 - March 4, 1853            Millard Fillmore
March 4, 1853 - March 4, 1857           Franklin Pierce
March 4, 1857 - March 4, 1861           James Buchanan
March 4, 1861 - April 15, 1865          Abraham Lincoln
April 15, 1865 - March 4, 1869          Andrew Johnson
March 4, 1869 - March 4, 1877           Ulysses S. Grant
March 4, 1877 - March 4, 1881           Rutherford B. Hayes
March 4, 1881 - September 19, 1881      James A. Garfield
September 19, 1881 - March 4, 1885      Chester A. Arthur
March 4, 1885 - March 4, 1889           Grover Cleveland
March 4, 1889 - March 4, 1893           Benjamin Harrison
March 4, 1893 - March 4, 1897           Grover Cleveland
March 4, 1897 - September 14, 1901      William McKinley
September 14, 1901 - March 4, 1909      Theodore Roosevelt
March 4, 1909 - March 4, 1913           William Howard Taft
March 4, 1913 - March 4, 1921           Woodrow Wilson
March 4, 1921 - August 2, 1923          Warren G. Harding
August 2, 1923 - March 4, 1929          Calvin Coolidge
March 4, 1929 - March 4, 1933           Herbert Hoover
March 4, 1933 - April 12, 1945          Franklin D. Roosevelt
April 12, 1945 - January 20, 1953       Harry S. Truman
January 20, 1953 - January 20, 1961     Dwight D. Eisenhower
January 20, 1961 - November 22, 1963    John F. Kennedy
November 22, 1963 - January 20, 1969    Lyndon B. Johnson
January 20, 1969 - August 9, 1974       Richard Nixon
August 9, 1974 - January 20, 1977       Gerald Ford
January 20, 1977 - January 20, 1981     Jimmy Carter
January 20, 1981 - January 20, 1989     Ronald Reagan
January 20, 1989 - January 20, 1993     George H. W. Bush
January 20, 1993 - January 20, 2001     Bill Clinton
January 20, 2001 - January 20, 2009     George W. Bush
January 20, 2009 - January 20, 2017     Barack Obama
January 20, 2017 - Incumbent            Donald Trump

एक प्रेसीडेंसी का इरादा पहले दिन शामिल है और अंतिम दिन को शामिल नहीं किया गया है। उदाहरण के लिए, "4 मार्च, 1861 - 15 अप्रैल, 1865; अब्राहम लिंकन" का अर्थ है कि लिंकन 4 मार्च, 1861 से 14 अप्रैल , 1865 तक राष्ट्रपति थे ।

यह कोड-गोल्फ है, प्रत्येक भाषा में सबसे छोटा कार्यक्रम जीतता है।

उदाहरण

इनपुट: "7 फरवरी, 1865" आउटपुट: "अब्राहम लिंकन"


18
नमस्ते वहाँ, CGCC में आपका स्वागत है! यह एक अच्छी चुनौती की तरह लग रहा है, लेकिन सभी चुनौतियों को आत्म-निहित होना चाहिए। विकिपीडिया लिंक के बजाय, कृपया यहां सभी राष्ट्रपतियों और उनके अवधियों की सूची बनाएं (अधिमानतः कोड-ब्लॉक में, इसलिए एक स्क्रॉल-बार दिखाई देगा)। इसके अलावा, मैं एक लचीला इनपुट-प्रारूप होने की सलाह देता हूं, इसलिए लोग जो भी प्रारूप, तीन ढीली पूर्णांक, एक दिनांक ऑब्जेक्ट, आदि में स्ट्रिंग के रूप में इनपुट कर सकते हैं कि वे अपनी पसंद की भाषा में कैसे फिट देखते हैं।
केविन क्रूज़सेन

3
साथ ही, भविष्य की चुनौतियों के लिए, उन्हें पहले प्रस्तावित चुनौतियों के सैंडबॉक्स में पोस्ट करना सबसे अच्छा है । वहाँ आप प्रतिक्रिया प्राप्त कर सकते हैं और चुनौती को बेहतर बना सकते हैं, इसे मुख्य पोस्ट करने से पहले। यहां रहने का आनंद! :)
केविन क्रूज़सेन

11
IO प्रारूप कितना लचीला है?
qwr

15
WolframAlpha["president on "<>#]&मुझे यकीन है कि शुद्ध गणितज्ञ के पास एक बिलिन है, लेकिन जब तक मुझे पता नहीं चलेगा कि मुझे क्या कहा जाता है, मैं डब्ल्यू के साथ चिपका हूँ।
पावेल

8
उस मामले में @ फावड़ा यह WolframAlpha["US president on "<>#]&मेरे लिए कारण बनता है कि उत्पादन सही नहीं है
jonatjano

जवाबों:


27

PHP , 936 बाइट्स

for($a=explode('-',gzinflate(base64_decode('dVTRbtswDPwV/YANKXZq+zFJ1wRts3VZtgB7Y2Mm1ipLAO0089+PtNIuHbAnAzySd+RRNkVZ6XxSJUsMdES1g66x/tgHn5iiKnSms+Q+NF7Nami7xJTajLFtE1ro1D0eDkidZJe6itnQYqfWUNsYNsV1OHgKyNHJ9G/rryfr98M7wyT2mfma8KzuYf8SG2Wx0Rqot179AK/mJ0JB8qhpZ52z0KoVehrUCoguEhjP38i2g0OS2PRK1kOqnoJ7kXAk/wn7BrjJFgYXJH2qdaHLZM0UQLW6428bSCaZZmPFHYF/cSzsySLtR+B68PmJG3oQNTdR7eyZoGG1jzx8cCMw1bnJ3wdntVH+TdT03Q1dx62+pWrJZD0jRaTYnPoG6RBY2DzlwQeUPZbmin/GRUAHi66OUGXKZNFg1yMJOKO+OcmgZdzLksIrIwuHr+jAj0VRxhz9L2h50KsFV9n/ii4n9GbNev9gvcMhMZUWDXJIGGrepNqE0EldL1j10dBwlqVv4SCgiWS7EGoKZ8VJo4hqcrkCloVeLWURVPMtC5RpPtxkAe6VhS9CcLY+ogCRaIX0jNQzkQzA8ewfU2/TD/pyccoksoFB/NjSqRVvKz4GY6rk9myPTS9Vn2yHvgnnsSs7L+h4h3epekDvsZZd3GTGTEzyOPg6ePHw3fyKzZeajZWDrNVn+3sMFzlPVPKrJXB8jmy9BIvY37btoBb8TkbWMrJugpfUDcJxlFrGxpd3v0rVLuUr7RqGqjjFnNfPZlovf4OJ1ua64C2b47HRHIifqvryDC1w1EQtfwA=')));$d=$a[+$i++];)date(Ymd,strtotime($argn))>$d?$m=$a[$i++]:die($m);echo'Donald Trump';

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


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

परीक्षण के लिए कोड एक ही तर्क है, लेकिन थोड़ा अलग की जगह die(...)के साथ return...तो मैं परीक्षणों पर पाश कर सकते हैं।


मैंने एक स्ट्रिंग बनाई है जिसमें राष्ट्रपति पद की शुरुआत की तारीख 1 दिन है YYYYMMDDऔर उसमें राष्ट्रपति के नाम को प्रारूपित करके अलग किया गया है -। उदाहरण:17890429-George Washington-17970303-John Adams-18010303-Thomas Jefferson-...

यह स्ट्रिंग gzdeflate का उपयोग करके संपीड़ित होती है और संपीड़ित आउटपुट को बेस -64 में बदल दिया जाता है, ताकि सभी वर्ण मुद्रण योग्य ASCII हो और मैं उन्हें यहां पोस्ट कर सकूं या TIO में उनका उपयोग कर सकूं

स्क्रिप्ट में, स्ट्रिंग को विभाजित किया जाता है -और ओवर लूप किया जाता है। प्रत्येक लूप पुनरावृत्ति के लिए:

  • $dवर्तमान पुनरावृत्ति मान (जो कि राष्ट्रपति की प्रारंभ तिथि -1 दिन है) और लूप चर ( $i) एक से बढ़ कर है।
  • यदि इनपुट तिथि इससे अधिक है $d, तो $mअगले पुनरावृत्ति मान (जो कि राष्ट्रपति का नाम है $d) और लूप चर ( $i) में एक बार फिर से वृद्धि हुई है। यह लूप को राष्ट्रपति के नाम प्राप्त करने की अनुमति देता है लेकिन पुनरावृत्तियों में उनके ऊपर कूद जाता है।
  • यदि इनपुट दिनांक से बड़ा नहीं है $d, तो इसका मतलब है कि पिछली पुनरावृत्ति सही अध्यक्ष थी, इसलिए फ़ंक्शन $mका उपयोग करके मुद्रित किया जाता dieहै, यह नाम प्रिंट करने के बाद पूरे कार्यक्रम को रोक देगा।

अंत में, यदि लूप समाप्त हो गया है (जिसका अर्थ है कि कोई dieभी कॉल नहीं किया गया था), तो अंतिम राष्ट्रपति का नाम छपा हुआ है, क्योंकि हम जानते हैं कि पिछले अध्यक्षों में से किसी को भी मैच मिला है (इसलिए मूल रूप से कुछ भी January 19, 2017) अंतिम राष्ट्रपति के नाम को प्रिंट करता है, भले ही वह हो January 1, 3999



मुझे PHP का पता नहीं है, लेकिन क्या आप बेस 64 को हटा सकते हैं और कच्चे अनपेक्षित अक्षर डाल सकते हैं (आप हेक्सडंप की आपूर्ति कर सकते हैं)।
MilkyWay90

@RyanMoore, बेहतर संपीड़ित स्ट्रिंग के लिए धन्यवाद, दुख की बात है कि मैं अब इस जवाब के नियंत्रण में नहीं हूं और मेरा उद्देश्य जिसे कई अप-वोट मिले (और कुछ डाउन-वोट भी) इसे ( इस संशोधन में ) से हटा दिया गया है । इसलिए मैं इस उत्तर को संपादित या गोल्फ नहीं करने जा रहा हूं, हालांकि अभी भी इसके लिए कुछ गोल्फ संभावनाएं हैं।
रात 2

@ मिल्कीवेय 90, जो पूरी तरह से संभव है। लेकिन मैंने इस संस्करण को यहाँ पठनीय कोड और TIO लिंक के उद्देश्य से पोस्ट किया है। मूल रूप से यह एक हार्ड-कोर जवाब नहीं था।
रात 2

15

बैश , 1229 1124 बाइट्स

-103 बाइट्स @ गामाफंक्शन की उत्कृष्ट टिप्पणियों के साथ, अनुत्पादक प्रतिस्थापन (एडम्स) के एक जोड़े को हटाकर, प्रत्येक प्रेसीडेंसी के लिए निरपेक्ष तारीख के बजाय पिछली तारीख से ऑफसेट का उपयोग करने के लिए कोड को फिर से भरना।

M=(. Ja F Mar Ap May Jun Jul Au S O N D)
A=40000
B=80000
s=son
a=James
c=Andrew
d=William
e=Harri$s
f=Franklin
g=George
h=Grover#Cleveland
i=Roosevelt
j=John
k=#W.#Bush
X="304:$g#Washington
$A:$j#Adams
$B:Thomas#Jeffer$s
$B:$a#Madi$s
$B:$a#Monroe
$A:$j#Quincy#Adams
$B:$c#Jack$s
$A:Martin#Van#Buren
100:$d#Henry#$e
39900:$j#Tyler
$A:$a#K.#Polk
10405:Zachary#Taylor
29595:Millard#Fillmore
$A:$f#Pierce
$A:$a#Buchanan
40111:Abraham#Lincoln
39889:$c#$j$s
$B:Ulysses#S.#Grant
$A:Rutherford#B.#Hayes
615:$a#A.#Garfield
39385:Chester#A.#Arthur
$A:$h
$A:Benjamin#$e
$A:$h
40610:$d#McKinley
79390:Theodore#$i
$A:$d#Howard#Taft
$B:Woodrow#Wilson
20598:Warren#G.#Harding
59402:Calvin#Coolidge
$A:Herbert#Hoover
120108:$f#D.#$i
79708:Harry#S.#Truman
$B:Dwight#D.#Eisenhower
21002:$j#F.#Kennedy
58998:Lyndon#B.#$j$s
50789:Richard#Nixon
29211:Gerald#Ford
$A:Jimmy#Carter
$B:Ronald#Reagan
$A:$g#H.$k
$B:Bill#Clinton
$B:$g$k
$B:Barack#Obama"
T=($1)
D=0${T[1]%,}
for((;;)){ [[ $T =~ ${M[++i]} ]]&&break;}
N=0$i
S=$[${T[2]}-1797]${N: -2}${D: -2}
for z in $X;{ O=$[O+${z%:*}];[ $S -lt $O ]&&z=${z//#/ }&&echo ${z#*:}&&exit;}
echo Donald Trump

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

मैनुअल संपीड़न का एक बहुत :)


कुछ और: से छुटकारा पाएं X=($X), लूपिंग के रूप में for z in $X$ IFS पर $ X का विभाजन होगा। के बजाय का [ -lt ]उपयोग करें , और का उपयोग करें । अंतिम कुछ पंक्तियाँ, कुल मिलाकर 1191 बाइट्स होनी चाहिए$T${T[0]}
गामाफंक्शन

1092 ! मैंने महीने की पार्सिंग को सरल बनाया (उदाहरण के लिए, अगर हम जून पास कर चुके हैं और यह J से शुरू होता है, तो इसे जुलाई तक शुरू कर देना चाहिए। मैंने भी परीक्षा को बदल दिया है [ ${T#${M[++i]}*} ]। अब हम दिसंबर को पूरी तरह से छोड़ सकते हैं)। मैंने :कुछ नामों पर अग्रणी को भी शामिल किया (ऐसा करने के बजाय :Johnसभी सीमांकक बनाने :के लिए #)।
गामाफंक्शन

12

टी-एसक्यूएल, 1169 981 979 977 बाइट्स

पवित्र गाय, मैंने SQL में स्ट्रिंग संपीड़न का पता लगाया ( SQL 2016 और इसके बाद के संस्करण में उपलब्ध ):

SELECT TOP 1 STUFF(value,1,8,'')
FROM d,STRING_SPLIT(
    CAST(DECOMPRESS(CAST('H4sIAAAAAAAEAHVT23LaMBD9FX1AxiMZg+1HIAWGhDaltMz0bYMXrEaWOmsc6r/vrpw27kOHB8ZnL+fs2VWqTa6NKe+DB1epA3XNz7tU61LABRCcXtSnZ2hAQCPgGgNdUB0Tteja+s6U5STmWufU0ll/DZ7BohzlbpJRehG77Ae+PcIFJD+PKra2aXq1BLoiCZjpQhdrJEldBaoYm8XGe3uqgSr10f6KdLOJMal57H0VvFokahtq3w6RSCffapWoB/Qeq57xaVR9f7OX+qruE/XBtujrcIvE2VRnxmyAqFdfkuhKVDmZaP6tCPwLTypl+xBafEV35WhaSnSD9Ix0VZsQXmOzdMJTmCW4Vy5ZhuBsdUHBjaQfmQS9WieK6SrrLxwxkeYYQkXhpo7WDaPo2J8/nYWG+9/EgQOchZt3w2WHGkMVCMeyijIfl+1OD9Y77CUQadYkOnl1kg+ePS6KSLRA/wMa1iw+2CihKKb/KxH+Ylljy6tT80TN6Vp3NES4ZAsNtoKvgc4WndTkUdi+u9ZIZ96uLG4DPbYcm0UJX13ftlzHO1iz6TLNTFaTzX1FeHtfczGLLPNngpqHfLT+FJzg0/ydfdHx0XiI8L+LfLJIJxRc61wXO/ZKvF3xf8N2ciCLer6DnF3PpvcuyHDZ9L39Q6KegnsR1OiMUbm5Q++QBmi8O/TcZeTrJMrc8eGzmm/AN9zxVXBguKk/4/JrHPLTgVcYPnc8bK/mFTRinBkNvAuegqgfLucNhOqNVEdNhzo00Kotns9IMZAPFxO7v7XN+SSy9O/bh7bmS+WX/hut0W9jPwQAAA=='as XML).value('.','varbinary(max)'))AS varchar(max)),',')
WHERE LEFT(value,8)<i

काफी बचत नहीं करता है जितना मुझे आशा थी कि शायद यह कोड की राशि के कारण इसे रूपांतरित / विघटित करने में लेता है।

यहां मूल संस्करण है, जो कोड के बराबर है जो एन्कोडेड स्ट्रिंग के विघटित होने के बाद चलता है (1169 बाइट्स):

SELECT TOP 1 SUBSTRING(value,9,99)
FROM d,STRING_SPLIT(
    '20170119Donald Trump,20090119Barack Obama,20010119George W. Bush,19930119Bill Clinton,19890119George H. W. Bush,19810119Ronald Reagan,19770119Jimmy Carter,19740808Gerald Ford,19690119Richard Nixon,19631121Lyndon B. Johnson,19610119John F. Kennedy,19530119Dwight D. Eisenhower,19450411Harry S. Truman,19330303Franklin D. Roosevelt,19290303Herbert Hoover,19230801Calvin Coolidge,19210303Warren G. Harding,19130303Woodrow Wilson,19090303William Howard Taft,19010913Theodore Roosevelt,18970303William McKinley,18930303Grover Cleveland,18890303Benjamin Harrison,18850303Grover Cleveland,18810918Chester A. Arthur,18810303James A. Garfield,18770303Rutherford B. Hayes,18690303Ulysses S. Grant,18650414Andrew Johnson,18610303Abraham Lincoln,18570303James Buchanan,18530303Franklin Pierce,18500708Millard Fillmore,18490303Zachary Taylor,18450303James K. Polk,18410403John Tyler,18410303William Henry Harrison,18370303Martin Van Buren,18290303Andrew Jackson,18250303John Quincy Adams,18170303James Monroe,18090303James Madison,18010303Thomas Jefferson,17970303John Adams,17890429George Washington',',')
WHERE LEFT(value,8)<i

लाइन ब्रेक केवल पठनीयता के लिए हैं।

INTमैंYYYYMMDD

बाइट्स बचाने के लिए मैंने कुछ तरकीबें इस्तेमाल कीं:

  • मैंने नीचे उतरने वाले राष्ट्रपतियों को छांटा, इसलिए मुझे ORDER BYकोड में जोड़ना नहीं पड़ा
  • मैंने प्रत्येक पद की "प्रारंभ" तिथि में 1 घटाया, इसलिए मैं <इसके बजाय उपयोग कर सकता था<=
  • स्ट्रिंग-स्प्लिट की एक बड़ी सूची की तुलना में बहुत कम VALUES()है, भले ही मुझे फिर से SUBSTRINGऔर साथ में स्ट्रिंग को तोड़ना होगा LEFT
  • संपादित करें : 2 बाइट्स को बदलकर सहेजा SUBSTRING()गयाSTUFF()

SQL में Base64- इनकोडिंग कंप्रेस्ड स्ट्रिंग्स का उपयोग करना

( SQL टिप्स थ्रेड में जोड़ा गया )

इसलिए Microsoft ने SQL 2016 में एक COMPRESSऔर एक DECOMPRESSफ़ंक्शन जोड़ा , जो GZIP को संभालता है; समस्या यह है कि यह एक रिटर्न देता है VARBINARY, जो कि बाइट्स में छोटा होता है (जब एक SQL VARBINARYफ़ील्ड में संग्रहीत किया जाता है ), वर्णों (कच्चे हेक्स) में प्रदर्शित होने पर अधिक लंबा होता है, जो इसे गोल्फ के लिए अनुपयुक्त बनाता है।

बेस 64 में परिवर्तित करना स्पष्ट रूप से उत्तर है, लेकिन एक छोटा, सरल कार्यान्वयन खोजना एक चुनौती थी। मैं एसओ पर इस पुराने उत्तर के अपने संस्करण को आधारित करता हूं , जो हमें सबसे अधिक जरूरत है जो हमें देता है, हालांकि यह नए GZIP कार्यों का उपयोग नहीं करता है। मुझे बस नए कार्यों को सही जगह पर डालना था, और इसे थोड़ा नीचे गोल्फ करना था।

इस विधि का उपयोग अपने कोड में करें:

--Run this to generate your compressed string:
DECLARE @s VARCHAR(MAX)='Your really long string goes right here'
SELECT CONVERT(VARCHAR(MAX),(SELECT CONVERT(VARBINARY(MAX),COMPRESS(@s))FOR XML PATH(''),BINARY BASE64))

--Use your compressed string and the following code to get back to the original:
DECLARE @e VARCHAR(MAX)='H4sIAAAAAAAEAIvMLy1SKEpNzMmpVMjJz0tXKC4pygRS6fmpxQpFmekZJQoZqUWpAGGwW5YnAAAA'
SELECT CAST(DECOMPRESS(CAST(@e as XML).value('.','varbinary(max)'))AS varchar(max))

कोड के 75 73 अतिरिक्त बाइट्स को एन्कोडेड स्ट्रिंग को डिकम्प्रेस करना है, इसलिए स्पष्ट रूप से केवल बहुत लंबे स्ट्रिंग्स के लिए इसका उपयोग करें।

संपादित करें : CASTइसके बजाय डीकंप्रेस कोड में 2 बाइट्स सहेजे गए CONVERT


12

एक्सेल, 1243 1206 1180 बाइट्स

-37 बाइट्स घटाकर सभी तिथियों से घटाकर
-26 बाइट्स घटाव मूल्यों के साथ fiddling द्वारा

=CHOOSE(MATCH(A1-65^4,{39805,119679,159679,239679,319679,399679,439679,519679,559679,559779,599679,639679,650084,679679,719679,759679,799790,839679,919679,959679,960294,999679,1039679,1079679,1119679,1160289,1239679,1279679,1359679,1380177,1439679,1479679,1599787,1679495,1759495,1780497,1839495,1890184,1919495,1959495,2039495,2079495,2159495,2239495,2319495}),"George Washington","John Adams","Thomas Jefferson","James Madison","James Monroe","John Quincy Adams","Andrew Jackson","Martin Van Buren","William Henry Harrison","John Tyler","James K. Polk","Zachary Taylor","Millard Fillmore","Franklin Pierce","James Buchanan","Abraham Lincoln","Andrew Johnson","Ulysses S. Grant","Rutherford B. Hayes","James A. Garfield","Chester A. Arthur","Grover Cleveland","Benjamin Harrison","Grover Cleveland","William McKinley","Theodore Roosevelt","William Howard Taft","Woodrow Wilson","Warren G. Harding","Calvin Coolidge","Herbert Hoover","Franklin D. Roosevelt","Harry S. Truman","Dwight D. Eisenhower","John F. Kennedy","Lyndon B. Johnson","Richard Nixon","Gerald Ford","Jimmy Carter","Ronald Reagan","George H. W. Bush","Bill Clinton","George W. Bush","Barack Obama","Donald Trump")

इनपुट A1प्रारूप के साथ सेल में है YYYYMMDDक्योंकि एक्सेल 1900 से पहले की तारीखों को पसंद नहीं करता है।

मुझे उन तारीखों या नामों के लिए संपीड़न विधि का पता नहीं है जो अधिक बाइट नहीं जोड़ेंगे। "सभी तिथियों से [मूल्य] घटाएं" विधि किसी के भी समाधान पर लागू हो सकती है।


मैंने उसी सिद्धांत का उपयोग करके Google पत्रक में 1102 बाइट्स समाधान पाया। एक्सेल में Splitफंक्शन नहीं है इसलिए यह ट्रांसलेटेबल नहीं है।

=Index(Split("George Washington,John Adams,Thomas Jefferson,James Madison,James Monroe,John Quincy Adams,Andrew Jackson,Martin Van Buren,William Henry Harrison,John Tyler,James K. Polk,Zachary Taylor,Millard Fillmore,Franklin Pierce,James Buchanan,Abraham Lincoln,Andrew Johnson,Ulysses S. Grant,Rutherford B. Hayes,James A. Garfield,Chester A. Arthur,Grover Cleveland,Benjamin Harrison,Grover Cleveland,William McKinley,Theodore Roosevelt,William Howard Taft,Woodrow Wilson,Warren G. Harding,Calvin Coolidge,Herbert Hoover,Franklin D. Roosevelt,Harry S. Truman,Dwight D. Eisenhower,John F. Kennedy,Lyndon B. Johnson,Richard Nixon,Gerald Ford,Jimmy Carter,Ronald Reagan,George H. W. Bush,Bill Clinton,George W. Bush,Barack Obama,Donald Trump",","),Match(A4-65^4,{39805,119679,159679,239679,319679,399679,439679,519679,559679,559779,599679,639679,650084,679679,719679,759679,799790,839679,919679,959679,960294,999679,1039679,1079679,1119679,1160289,1239679,1279679,1359679,1380177,1439679,1479679,1599787,1679495,1759495,1780497,1839495,1890184,1919495,1959495,2039495,2079495,2159495,2239495,2319495}))

2
मैं एक्सेल को बहुत अच्छी तरह से नहीं जानता (और मेरा स्थानीय एक्सेल डच है, इसलिए मैं सत्यापित करने में असमर्थ हूं), लेकिन क्या यह सही है? क्या यह तिथियों के मुकाबले कम मैच के बजाय सटीक मैच के लिए नहीं दिखता है? क्या यह आउटपुट कुछ कहने देगा 19000101?
केविन क्रूज़सेन

3
@ केविनक्रूजसेन नोप, के MATCH()पास वैकल्पिक 3 तर्क माचिस है जो यह निर्धारित करता है कि सटीक मिलान का उपयोग करना है या नहीं। उस तर्क को छोड़कर, डिफ़ॉल्ट का उपयोग करता है, जो "मैच से कम या बराबर" है, इसलिए यह कोड सही है।
ब्रैडेक

@BradC आह, वह नहीं जानता था। समझाने के लिए धन्यवाद! मुझ से +1। :)
केविन क्रूज़सेन

1
प्रत्येक से एक निश्चित मूल्य घटाने के साथ अच्छी चाल, मुझे यह देखना होगा कि क्या यह मेरी भी मदद करता है।
ब्रैडेक

9

05AB1E , 587 584 568 बाइट्स

.•6}©ß þz∊‘Îнúj7a>º ·,$_+šüÑßu?PδIëàá©ā.ǝ/¬j«Ížr‹þVwô¨"¶&ˆ₃ǝαh^¼ì∞öîNÊÌ.ÚáýиÇ÷©Mèé…—¾…тŒ¹/ÈÂÓŒš/«ª³PÉÇJúΓÁ¦';X·₅ï»/„q<ƶÚÙÊtÔιuš2βƒ¼ï\~ö…3ihD·¢ðΘmζ8É9Ïγ=^$¨Ä₆ËÂÊPv5+}þ¯ÑX4hÖdÀÒuàнº₁›ǝΘ³P@¥ùnðT“É)ó_“:Èx³«äƒæ¤∞Wgþ¶š}ô|ićcÁ‘.·ƒp>Z¬Aéγê‰ù‰¥Ó₃#/›pÐT¹Â¹J3—ΛΓkÙ»(áÌ›₃z@ìqW›Â"™raÒ›₂%ïx{
_Ωb≠¹₁ľÊÌ›}çºô|ôëKÝǝÚï,‚£=A©áāY∊~"KøVóΓyΛJÚΘ·ˆUΩ₂TнîëнÐQнĆ!!¶%Ý₃ó¸ß0ûиî€AvÙ∍Õ
'«₂θSè‡H¿ÏLôǝāqaмÑIƶ%ŸSdUbåÐÉιδJ¯4₆>θçàƶñwC¨OVÀàczdRæs?5ʒP8“ƒÍÜðαŸÝf,ƒη,™`ÿeиäƵθC≠ýzX‡)и∞úø+þćÎÌвĆ挱ðí1•™„qz„K.‡„  ¡•gpöz&»XZ1rć¾{¦¯Û¿p~Θø•Ƶaв₄R«•e½òœu#ÈĆÔFƵ•Ƶ`вŽcƵ«•9…åœòFýLÂ]FÜÔĀ=Ƶ®5¿ùK»Ωм••Rwg•в««•1L₄Æ•+I‹Oè

इनपुट प्रारूप में एक नियत तारीख है yyyyMMdd(यानी 2019082121 अगस्त, 2019 के लिए)।

-16 बाइट्स थैंक्स टू @Grimy

इसे ऑनलाइन आज़माएं या कुछ और परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

हम कालानुक्रमिक क्रम में राष्ट्रपतियों की सूची बनाकर शुरू करते हैं:

.•6}©...ðí1            # Push compressed string "george washington  john adams  thomas jefferson  james madison  james monroe  john quincy adams  andrew jackson  martin van buren  william henry harrison  john tyler  james kz polk  zachary taylor  millard fillmore  franklin pierce  james buchanan  abraham lincoln  andrew johnson  ulysses sz grant  rutherford bz hayes  james az garfield  chester az arthur  grover cleveland  benjamin harrison  grover cleveland  william mcqinley  theodore roosevelt  william howard taft  woodrow wilson  warren gz harding  calvin coolidge  herbert hoover  franklin dz roosevelt  harry sz truman  dwight dz eisenhower  john fz kennedy  lyndon bz johnson  richard nixon  gerald ford  jimmy carter  ronald reagan  george hz wz bush  bill clinton  george wz bush  barack obama  donald trump"
                       # Titlecase each word in the string
qzK.‡                 # Replace all lowercase "q" with "K" (for McKinley),
                        # and all lowercase "z" with "."
                        # (only lowercase letters and spaces can be compressed as string)
  ¡                    # Split the string on "  " (two spaces)

तब हम प्रारूप में पूर्णांक के रूप में सभी तिथियों की एक सूची बनाते हैं yyyyMMdd(आदेश इस सूची के लिए अप्रासंगिक है):

gpözXZ1rć¾{¦¯Û¿p~Θø• # Push compressed integer 57036763189461803778321913240836786322696217070172
  Ƶa                    # Push compressed integer 137
    в                   # Convert the large integer to base-137 as list:
                        #  [4,12,20,28,32,40,44,48,52,56,60,64,72,80,84,88,92,96,100,112,116,124,132,136]
     R                 # Push 1000, and reverse it to "0001"
       «                # And concat it to each item:
                        #  [40001,120001,200001,280001,320001,400001,440001,480001,520001,560001,600001,640001,720001,800001,840001,880001,920001,960001,1000001,1120001,1160001,1240001,1320001,1360001]
                        # (this is for all the March 4th dates)
e½òœu#ÈĆÔFƵ•           # Push compressed integer 47362342587646909879438102
  Ƶ`                    # Push compressed integer 223
    в                   # Convert the large integer to base-223 as list:
                        #  [155,163,171,179,183,191,195,203,211,219,222]
     ŽcƵ                # Push compressed integer 9817
        «               # And concat it to each item:
                        #  [1559817,1639817,1719817,1799817,1839817,1919817,1959817,2039817,2119817,2199817,2229817]
                        # (this is for all the January 20th dates)
1厨£ÆÊÂç-iYúΛȾEW½Ω≠tW
                        # Push compressed integer 42494608868313599134973321717434089414197466371857150907
  Rwg                 # Push compressed integer 1770507
       в                # Convert the large integer to base-1770507 as list:
                        #  [440101,530406,680112,840616,1040611,1260499,1480109,1660819,1770506]
                        # (these are the remaining dates; i.e. those who died earlier)
««                      # Merge the three lists together:
                        #  [40001,120001,200001,280001,320001,400001,440001,480001,520001,560001,600001,640001,720001,800001,840001,880001,920001,960001,1000001,1120001,1160001,1240001,1320001,1360001,1559817,1639817,1719817,1799817,1839817,1919817,1959817,2039817,2119817,2199817,2229817,440101,530406,680112,840616,1040611,1260499,1480109,1660819,1770506]
  1L₄Æ•                # Push compressed integer 17970302
        +               # Add it to each item in the list:
                        #  [18010303,18090303,18170303,18250303,18290303,18370303,18410303,18450303,18490303,18530303,18570303,18610303,18690303,18770303,18810303,18850303,18890303,18930303,18970303,19090303,19130303,19210303,19290303,19330303,19530119,19610119,19690119,19770119,19810119,19890119,19930119,20010119,20090119,20170119,20200119,18410403,18500708,18650414,18810918,19010913,19230801,19450411,19631121,19740808]

फिर हम सूची में तारीखों के आधार पर आउटपुट अध्यक्ष-नाम निर्धारित करने के लिए इनपुट का उपयोग करते हैं:

I                      # Check for each value in the integer-list if the Input is smaller
                        # (1 if truthy; 0 if falsey)
  O                     # Sum these to get the amount of truthy values
   è                    # And use that to (0-based) index into the president-names list
                        # (after which the result is output implicitly)

(वर्गों मेरा यह 05AB1E टिप देखें कैसे तार को संपीड़ित करने के शब्दकोश का हिस्सा नहीं? , बड़े पूर्णांकों? संपीड़ित करने के लिए कैसे , और कैसे पूर्णांक सूचियों संपीड़ित करने के लिए? ) को समझने के लिए सभी संकुचित स्ट्रिंग, पूर्णांकों, और सूचियों काम करते हैं।


1
@Grimy मैं वास्तव में इसे कॉपी नहीं कर सका, इसलिए मैंने जो किया उसे देखने के बाद आपको इसे फिर से खुद को कंप्रेस करना पड़ा। मैंने हर राष्ट्रपति के नाम की जाँच की, और सभी पत्र ले लिए गए। लेकिन पहले टाइटलसिंग द्वारा बाइट्स को बचाने का अच्छा तरीका, और फिर लोअरकेस अक्षरों का उपयोग करना जो अब डॉट्स और अपरकेस अक्षर में बदलने के लिए मौजूद नहीं हैं। -16 के लिए धन्यवाद!
केविन क्रूज़सेन

उन नामों के बहुत सारे शब्द शब्द हैं, जो बड़े सुधार की ओर ले जाते हैं। एक शुरुआत के रूप में, यहाँ -32
ग्रैमी

1
@Grimy शायद अगले हफ्ते कहीं जाने की कोशिश करेगा। वर्तमान में खाने के बारे में, और कल मैं एक समय सीमा के कारण काम में व्यस्त हूं।
केविन क्रूज़सेन

1
464 है । यह अभी भी कामचलाऊ है, लेकिन मुझे नहीं लगता कि यह जेली के 426 को हरा सकता है । उनका स्ट्रिंग संपीड़न सिर्फ बेहतर है।
ग्रिमि

7

जेली ,  431 428 427  426 बाइट्स

“¡Ẹị’ḃ4ż“ƓĠƒƝƊ!ɓa(‘ḅ⁹
“FQIȥ’ḃ8Ėẋ/€<8ż¢F1,303yo119
“f×Ð<Mk7LqƇ%_¡¤cċ⁴ẏ’Do13’⁽¤.;Äż¢ḅȷ4<VSị“¡ṀÑṅyȮÇæjRṂ~ɠƥ⁺'Ḃġ"Ƈ~Ị'9ƒȮṃ$ḶPȯṅṡḊl¥JƊ€ẊḥSṣọwɦṡ5ėṂU #Fɲẓ÷iḄþ%~%ñçŒfƒƙɼ=ɓ⁼¡⁻Q`⁵¡ḍ36)żȥÑR\ḋ⁾ḶƤ0ÞṘḳ÷¦IṂ\}ƊĊÐḳŻƈɦ!zɠ⁺ƈṖṭW⁸ƥṛU|ḄØ^ẓfḂḣƈCȦ8ɱḤH⁵AKṢzȯỵƭḊ:TʠƬ/~ƝÑȥgṖ(ṁȯDƲṫỴftlBOȧ6Ụiṃıẉ_ƈvh5ṄUɓạẓDẠẸıṣƥ"bçȥ¿çOġQẹİẊẸs*⁶ż,Ḍg®ƲW×ɗ,ẏ¡Ḅ5M5)ṀạƈCṛʂẎŒƬwġ⁶NẠṆRƇsẊ<fŀȯ⁵øȤ\⁾.>ḋTṖĠUṇŻṬTṖræ_TçṡȤOʠƥðȦe]ƈ⁵cṆWƭƲ>`½n¿O¡ṭOþV¤ṡẊ²rdS€ė)ƘIÆ&ṙḞ¬5[pṁȥLṘVỴɠ»ḲṚƑ”.ẋṭƲ€KỴ¤

एक पूर्ण कार्यक्रम YYYYMMDDजो एक स्ट्रिंग को स्वीकार करता है जो राष्ट्रपति के नाम को प्रिंट करता है।

इसे ऑनलाइन आज़माएं! या देखें (केविन क्रूज़सेन का) टेस्ट-सूट

कैसे?

“¡Ẹị’ḃ4ż“...‘ḅ⁹ - Link 1, getNonStandardEndMonthDays: no arguments
“¡Ẹị’           - base 250 literal       = 106467
     ḃ4         - to bijective base 4    = [1,2,1,3,3,3,1,4,3]
        “...‘   - code-page indices      = [147,196,158,150,145,33,155,97,40]
       ż        - zip together           = [[1,147],[2,196],...,[3,40]]
              ⁹ - built-in literal       = 256
             ḅ  - from base (vectorises) = [403,708,414,918,913,801,411,1121,808]

“FQIȥ’ḃ8Ėẋ/€<8ż¢F1,303yo119 - Link 2, getEndMonthDays: no arguments
“FQIȥ’                      - base 250 literal    = 1114518671
      ḃ8                    - to bijective base 8 = [8,2,3,3,4,3,2,2,1,7]
        Ė                   - enumerate           = [[1,8],[2,2],[3,3],[4,3],[5,4],[6,3],[7,2],[8,2],[9,1],[10,7]]
           €                - for each:
          /                 -   reduce with: 
         ẋ                  -     repeat          = [[1,1,1,1,1,1,1,1],[2,2],[3,3,3],[4,4,4],[5,5,5,5],[6,6,6],[7,7],[8,8],9,[10,10,10,10,10,10,10]]
            <8              - less than 8?        = [[1,1,1,1,1,1,1,1],[1,1],[1,1,1],[1,1,1],[1,1,1,1],[1,1,1],[1,1],[0,0],0,[0,0,0,0,0,0,0]]
               ¢            - call last Link (1)  = [403,708,414,918,913,801,411,1121,808]
              ż             - zip together        = [[[1,1,1,1,1,1,1,1],403],[[1,1],708],[[1,1,1],414],[[1,1,1],918],[[1,1,1,1],913],[[1,1,1],801],[[1,1],411],[[0,0],1121],[0,808],[0,0,0,0,0,0,0]]
                F           - flatten             = [1,1,1,1,1,1,1,1,403,1,1,708,1,1,1,414,1,1,1,918,1,1,1,1,913,1,1,1,801,1,1,411,0,0,1121,0,808,0,0,0,0,0,0,0]
                 1,303      - pair literal        = [1,303]
                      y     - translate           = [303,303,303,303,303,303,303,303,403,303,303,708,303,303,303,414,303,303,303,918,303,303,303,303,913,303,303,303,801,303,303,411,0,0,1121,0,808,0,0,0,0,0,0,0]
                        119 - literal             = 119
                     o      - logical OR          = [303,303,303,303,303,303,303,303,403,303,303,708,303,303,303,414,303,303,303,918,303,303,303,303,913,303,303,303,801,303,303,411,119,119,1121,119,808,119,119,119,119,119,119,119]

“...’Do13’⁽¤.;Äż¢ḅȷ4<VSị“...»ḲṚƑ”.ẋṭƲ€KỴ¤ - Main Link: list of characters, X
“...’                                     - base 250 literal    = 5999595155245555951555559593750993764595999
     D                                    - to base 10          = [5,9,9,9,5,9,5,1,5,5,2,4,5,5,5,5,9,5,1,5,5,5,5,5,9,5,9,3,7,5,0,9,9,3,7,6,4,5,9,5,9,9,9]
       13                                 - literal             = 13
      o                                   - logical OR          = [5,9,9,9,5,9,5,1,5,5,2,4,5,5,5,5,9,5,1,5,5,5,5,5,9,5,9,3,7,5,13,9,9,3,7,6,4,5,9,5,9,9,9]
         ’                                - decrement           = [4,8,8,8,4,8,4,0,4,4,1,3,4,4,4,4,8,4,0,4,4,4,4,4,8,4,8,2,6,4,12,8,8,2,6,5,3,4,8,4,8,8,8]
          ⁽¤.                             - literal             = 1797
             ;                            - concatenate         = [1797,4,8,8,8,4,8,4,0,4,4,1,3,4,4,4,4,8,4,0,4,4,4,4,4,8,4,8,2,6,4,12,8,8,2,6,5,3,4,8,4,8,8,8]
              Ä                           - cumulative sums     = [1797,1801,1809,1817,1825,1829,1837,1841,1841,1845,1849,1850,1853,1857,1861,1865,1869,1877,1881,1881,1885,1889,1893,1897,1901,1909,1913,1921,1923,1929,1933,1945,1953,1961,1963,1969,1974,1977,1981,1989,1993,2001,2009,2017]
                ¢                         - call last Link (2)  = [303,303,303,303,303,303,303,303,403,303,303,708,303,303,303,414,303,303,303,918,303,303,303,303,913,303,303,303,801,303,303,411,119,119,1121,119,808,119,119,119,119,119,119,119]
               ż                          - zip together        = [[1797,303],[1801,303],[1809,303],[1817,303],[1825,303],[1829,303],[1837,303],[1841,303],[1841,403],[1845,303],[1849,303],[1850,708],[1853,303],[1857,303],[1861,303],[1865,414],[1869,303],[1877,303],[1881,303],[1881,918],[1885,303],[1889,303],[1893,303],[1897,303],[1901,913],[1909,303],[1913,303],[1921,303],[1923,801],[1929,303],[1933,303],[1945,411],[1953,119],[1961,119],[1963,1121],[1969,119],[1974,808],[1977,119],[1981,119],[1989,119],[1993,119],[2001,119],[2009,119],[2017,119]]
                  ȷ4                      - literal 10^4        = 10000
                 ḅ                        - from base           = [17970303,18010303,18090303,18170303,18250303,18290303,18370303,18410303,18410403,18450303,18490303,18500708,18530303,18570303,18610303,18650414,18690303,18770303,18810303,18810918,18850303,18890303,18930303,18970303,19010913,19090303,19130303,19210303,19230801,19290303,19330303,19450411,19530119,19610119,19631121,19690119,19740808,19770119,19810119,19890119,19930119,20010119,20090119,20170119]
                     V                    - evaluate (X)        (i.e. X -> YYYYMMDD)
                    <                     - less than? (vectorises)
                      S                   - sum                 (a number between 0 and 44 inclusive)
                                        ¤ - nilad followed by link(s) as a nilad:
                        “...»             -   compression of dictionary words and strings
                             Ḳ            -   split at spaces
                                     €    -   for each (part):
                                    Ʋ     -     last four links as a monad:
                               Ƒ          -        invariant under?:
                              Ṛ           -          reverse (true for initials only)
                                ”.        -        literal = '.'
                                  ẋ       -        repeat
                                   ṭ      -        tack (the part - e.g. [['A'],'.'])
                                      K   -   join (back up) with spaces
                                       Ỵ  -   split at newline characters
                       ị                  - index into (that list) (1-indexed & modular)
                                          - implicit (smashing) print

प्लस वन मुझसे। यह आश्चर्यजनक लग रहा है
90

धन्यवाद! एक साथ रखने के लिए काफी समय लिया।
जोनाथन एलन

5

जेली , 454 बाइट्स

“¡#<Ḷ“¡D{“ß“®“c“ƒⱮ“¡“(Ȥ“u^“£“ɠn“ƒ⁺“¥“¢r“ƈ⁶“©“ƙm“¡B⁻“¤“Pẋ“ḣ¢“¡“¡ẓk“¡CẆ“¢“S¢“ėẋ“ṄỴ“t<“Œ“¦’ḃ2$¹<?€ȷ2F4ȷ4,8ȷ4ĖF¤yÄ<⁸TṪị“€`ɲ×ƥF7ȯẒ⁼ẈẎu⁻ɠṇẠẈƊ⁻QḲỌ ỊƭʠµḢƊCṾr⁻=ßạḌ`^ḌX§®tṭN£jx,ƈ=suĖɼ_ḍf9*ÆṙỊṪṄ Jʋ ȯṡẉ ỌẏⱮøÞ⁴xḤżḅñ£ṡṭʂMṚ¶ṇwıƲṁEnÄ`:®ƥʂ_xd⁶ŒĖṁƙƝg°ṂʠkṫhO5Ịḅḳ³'ø⁵aẏṄKḂẆZØ4JḌþḂ⁸⁸XlIVḤOḲØṢÐ!}?Ọ°ḲẆiḢAr`ġƘ⁸ḷ[¿T§ẓ⁵|ḍdɓ^ṭƲfỴĖġJw(Ȯ:⁺k=£ŀnṗ*'hẹḋŻZOLæزẋ⁼ẏ&ı6ḣṗẈƥ¡:9D¢=G§⁴eỤ6wẈ6ṗw6⁺zOẉ}OṆƲdṃ'ıẠ£¤þ4¢1ȷfɓ.ṪpṀ⁴Ṡtṁ⁷ẇlŒ!ṠyaṪ66xvḍgġ¤goḍRẒ³żẎịṣ6ĿⱮ}ḲkƒiL²?Ḃ¿ḥƝ¤dėḤ½Ṗ,cRÐþɼ©ṢƈḅṬḊṬɠṅÞ»Ỵ¤

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

एक YadYMMDD प्रारूप में अपने तर्क के रूप में एक विवादास्पद लिंक ले रहा है और उत्तर के साथ एक स्ट्रिंग लौटा रहा है।

टेस्ट मामलों ( @ केविनक्रूजसेन के 05AB1E उत्तर से उधार लिया गया )।


4

जावास्क्रिप्ट (Node.js) ,  855 851  803 बाइट्स

d=>(g=i=>(p+=parseInt((a=(require('zlib').inflateRawSync(Buffer("ZVJtct0gDLwKB1A9dSaTtGfoKWSQDc+AXgS2S09f8T6cdPqDsc2utKuVv411jTC6FV4EzzO6eD53GG26vc0Wtp+3t9uhjkwn7+0dxnf6hPu5JHiJP8524mHcr7fPV3yDF+Z79XcL48em2ASy/yP+1dRCLAuZA4sPeamc4cI+G3SYClTPCYu50DyTlI5homISuvDli7Mw3cs+tpBte1RjdkKHuaBdOzuh1JDNjtlMm1CGI8QYMBlPWZrxKHLv2hvVFkkeAutgrhxX+INWSc1UbJEFkpajODPrM7EQzIJ5jSpxDSSWHtXTplUZM+Ak6FVOGZZjPu2pXJfdYitF+WUwizaqIFv1JDOrxDSovUbl0RKVgjIHig6sp1JJ+p3O5zeBRXjXCxtpp6giMFHWOvV1jvgf5RlFsr9CjtQ0eWKnQxlhLp1VP+Pio49dcdY7Zid8GMV6XwU0WLN0u+J0n2Ax7qpsmWNwC4FONJFUbdIdfEbmhi9K3WfrQVTZkibnjrD42jkUCmU10HfT1zQPZqWcyTWILTvOPapnohL6vpzJ4XefmQSjbkvzhEtIqRmrgWkj4dwBIVwwP/9HP5hj0N0VD5POrVGFXPmETwxF/y7DEyYEd2/UTV//Ag","base64"))+"").split`,`)[i],32))<new Date(d)/864e5?g(i+1):a[i+44].replace(/\b./g,c=>c.toUpperCase()))(p=0)

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

कैसे?

संकुचित स्ट्रिंग में 89 मानों की सूची है।

पहले 44 मान दिनों की संख्या में व्यक्त किए गए अध्यक्ष जनादेशों की लंबाई और आधार 32 में एन्कोडेड हैं (जो सबसे अच्छा संपीड़ित करने वाला आधार है)।

अगले 45 मान निम्न मामले में राष्ट्रपति के नाम हैं। शीर्षक-मामला बाद में लागू किया जाता है ( @ केविनक्रूजसेन के उत्तर से उधार ली गई चाल )।


शीर्षक-मामले के कारण, मैकिन्ले "मैकिनले" के रूप में आउटपुट करता है।
TheJim01

@ TheJim01 ने इसे रिपोर्ट करने के लिए धन्यवाद दिया। अब तय हो गया।
अरनौलड

3

एसओजीएल , 475 बाइट्स

⁵æ“DƧ▓«ļ¶↕Q∫<⅔∑+fQyΛ‼Bī:׀═&Sf',№═׀ΔΥκ\κΗδ=6oΡΠω«i℮ī K }½6YΨδ~░pTø№ŗ◄&Λθ▒“Æš“─{1α:C'⁰%+:"⅞“*c'⁰÷+dr"⅞“*b'«*e++>?al"t!■u↔R⅝Θνj╤←⁵κP׀λc⅜-Gc⁸׀!┐)└█5¦@T¬[@∫↕‛ρ℮↑δŗιf√³I2~Δ▓η¤⁴b¡νθ@36⅛Π└Ξ±Ƨ⅜⅓mwθ:∫^⌠≥-N\T‛V;r□τθ⁹;C{¾lΠƨUΒΡ║⁸Κ≤øΔ°?U┼S→iļ┐Kπzz∑Θ⅛%τ`ωΗ2D≡ψ_;OR⁴w≡1Z⅓ēυ%─ž′ιVJοUζķπd└≈³ΘΟ‚GR2┌═NΒθ↔T²νsσ□lQMæν÷¦Π±°≡═øΡTe¼ž⁰λ_►○³1≡№╚█λΜβΤ½<Π±Cļ¬└⁴┘čgr⁰⁄▲8|}⁸ē4№╤#√⅔d?÷≥}▼eī┼^ƧX‽>≥▼k ¹Wļm║⌠¦→┘C׀ψΠ¼⁽tΠ↔:φbεļ▓Β√⁷->→⅜O∑░=`ξε↕ņ⅛╚πBπσ§T׀ķīT:‽4;%≥═pP¶G→○▼φβjτ9v⁄6Υ◄⁹¤{τ/∑a⁰}┐⁵e¬č‘ūƧkiƧKiŗƧ, Θw←

यहाँ यह कोशिश करो!

दिनांक तर्क में शायद थोड़ा सुधार किया जा सकता है।


3

PHP , 888 बाइट्स

$_=0;$l=explode('|',gzinflate(substr($a=base64_decode('AAALMQW0C2oLagtqBbULagW1AB8FlgW1AewDyQW1BbUF3wWLC2oFtQDHBO4FtQW1BbUGdgqoBbULagNxB/kFtRFGCxgLagQMB14H6wN/BbULagW1C2oLagtqZVLtjtpADHyVfYK8Ax8FBEd7pWmR+s9kTXbLxq68CXSlffjaheNO6q8o6/HMeOw1svTojpBDpH5kqlsO5GYehlzbwANkt8XzGSVbDQbMbg8+fvhjEsZ729cpUlce3TPygje3he5i6D3IGMn9AHLzSZDqMaYUYXAbJCluAyJ3ViNqS0J5COwa98rpUn9CF0CRLZTEUvfaDuLdSr8DC9aVAF2SSrxGlA4f3fNJuwiozk4CQeVe1CInetpTOZP9nkrOiv/WuLUSjfUwjQHlzCoxb9RewfygnCkE5Bwx+boImEcUe5vJGCapa+GrPiwSXjEB+TpH+gWD+nqO+B/kLYp9t4uUsGjyyF6HcgfmbKjxPS6+2dgtnPWN2QvfnNaM96gCSG5tdsXrPusC0lWVF8wp+h7rBuWEMiqJOXiPbNl8UDKfxYJoZRo0ueUt9mE0zKeYkQLfbDe2plXjdkiEvtSXQp7JonpL9BBtX959jn9sZhRIui3Ns27jMBS30INQogOTFQ4IPRjs3z1uGndsdHc51LnOrVFFGvlZftZA9LrclxMMUJd3IjP9+y8='),90)));foreach(str_split(substr($a,0,90),2)as$i=>$d)(strtotime($argn)+5701449600)/86400<($_+=hexdec(bin2hex($d)))&&@die($l[$i-1]);echo end($l);

ट्राय DEMO


3

05AB1E , 464 444 442 418 बाइट्स

-15 या तो केविन क्रूज़सेन के जवाब से विचारों को चुराकर बाइट्स

पार 444 अभी भी है 444):

.•J@λ
A∞‚XÃUδ„«›Æx…ΔΣ¸ÃEÛö›³;Î!¦ǝzŽ`²œ∊ïøÞ‰Cf4₆и)Kuм¹5®‹м£Ž}мNPõüïí
^ā-Ǩåˆ[Ü_5δ³ÂBмzIΣŠÒÅÆè"²0¢₆'$Ćùù»õJ´õý¢ºн³õ?ëØ؆Dǝç.r˜èÌ•ć¡`“ŒÕ‡¹„б·Ž²¿É‰Þ³×‰Þ̯„Ðëìncy±·¢Œžˆ–ÄîèÿíÈ£ÎÈœ„ÐÕÀ‰Þ kz™éÿ¥•¹êardœãÿ²ÀâÓ‰Þÿ㳫ƢŒš•ÿ—§Î¶ÿ橉ޖÖÿל–Ö·Š¶‹r¯ŽÇÕÈœ¶‹r¯ŽíÈÿíÈ©Æ»äft–œrow¦‹¼‰ gz†èingãŸîÁÿ²Àÿ„Ð fz½¸ÿš••Öÿéï™»»É»‰ÖŠÿŒÕÕ¹ wzŒ›‰ŽµÍŒÕ wzŒ›‹²ÿ¹Ñÿ“™„qz„K.‡#•¥ü„¨%¨₃Ó8•3в4α£ðý•9ÕS&µç©•3в±žD*•¾¹iìzÓ.+,âšÜĀ‘ó₆x.»δ•žHв«9._.¥•U<¶•+I32β‹Oè

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

भाग 1: नाम

05AB1E में दो प्रकार के स्ट्रिंग कंप्रेशन हैं:

  • बेस -27 स्ट्रिंग्स प्रत्येक अक्षर को ~ 0.6 बाइट्स (तकनीकी रूप से: लॉग (27) / लॉग (255)) में कूटबद्ध करते हैं, लेकिन उनमें केवल [a-z ]अक्षर (रिक्त स्थान और रिक्त स्थान) हो सकते हैं।
  • डिक्शनरी स्ट्रिंग्स ने 2 बाइट्स में सामान्य अंग्रेजी शब्दों (साथ ही पूर्ववर्ती स्थान) को एनकोड किया है, और 1 बाइट में सभी ASCII अक्षर (वे सिर्फ अनमॉडिफाइड के माध्यम से पारित किए गए हैं)। वे बाइट का उपयोग कर सकते हैं ÿ, स्टैक से एक मूल्य पॉप करने और इसे स्ट्रिंग में एम्बेड करने के लिए।

हम दोनों के एक इष्टतम मिश्रण का उपयोग करने जा रहे हैं। एक एन्कोडिंग से दूसरे ओवरहेड पर स्विच करने के बाद से, यह प्रत्येक व्यक्ति के नाम के लिए सबसे छोटा एन्कोडिंग चुनने से अधिक जटिल है। उदाहरण के लिए:

  • ingमें Harding Calvinबनाम एक शब्दकोश स्ट्रिंग में 3 बाइट्स आधार -27 में ~ 1.8 बाइट्स लेता है। लेकिन Hardऔर Calvinदोनों शब्दकोश में हैं, इसलिए हम ingएक शब्दकोश स्ट्रिंग के अंदर असम्पीडित छोड़ देते हैं ।
  • Herbमें Coolidge Herbert Hooverएक शब्दकोश स्ट्रिंग में आधार -27 में ~ 3 बाइट्स लेता बनाम केवल 2 (के बाद से herbशब्दकोश में है)। लेकिन न तो शब्दकोश में हैं, Coolidgeऔर न ही Hooverहम Herbबेस -27 के रूप में एन्कोडिंग को समाप्त करते हैं ।

प्रतिबंध के आसपास पाने के लिए कि आधार -27 तार केवल शामिल हो सकते हैं [a-z ], हम कुछ अक्षरों के लिए विशेष अर्थ प्रदान करते हैं। उनके बीच, 44 अध्यक्ष सभी 26 पत्रों का उपयोग करते हैं, लेकिन हम अभी भी चालें खेल सकते हैं:

  • केवल jरों शब्दकोश शब्द (में हैं James, Benjamin, ...), तो jआधार -27 स्ट्रिंग्स के लिए नि: शुल्क है।
  • एकमात्र qमें है Quincy, इसलिए लोअरकेस qमुफ्त है
  • एकमात्र zमें है Zachary, इसलिए लोअरकेस zमुफ्त है
  • केवल xमें है Nixon, इसलिए अपरकेस Xमुफ्त है (हम वास्तव में इसका उपयोग नहीं करते हैं)

इसके साथ ही कहा कि कोड को देखें।

.•J@λ
A∞‚XÃUδ„«›Æx…ΔΣ¸ÃEÛö›³;Î!¦ǝzŽ`²œ∊ïøÞ‰Cf4₆и)Kuм¹5®‹м£Ž}мNPõüïí
^ā-Ǩåˆ[Ü_5δ³ÂBмzIΣŠÒÅÆè"²0¢₆'$Ćùù»õJ´õý¢ºн³õ?ëØ؆Dǝç.r˜èÌ•

# (The newlines are significant.) This is the base-27 string:
# "j trumpjack obamaj reaganj nixonj lyndon bzj dz roosevelt harry sz truman dwight dz eisenhowerjidge herbert hooverj mcqinley theodore rooseveltj garfieldjerford bzj ulysses szj buchananjmorejlk zacharyj buren"

ć    # extract the first character
 ¡   # split the rest on that character (a "j")
  `  # dump the list on the stack
# We now have " buren" at the top of the stack, and " trump" at the bottom.

“ŒÕ‡¹„б·Ž²¿É‰Þ³×‰Þ̯„Ðëìncy±·¢Œžˆ–ÄîèÿíÈ£ÎÈœ„ÐÕÀ‰Þ kz™éÿ¥•¹êardœãÿ²ÀâÓ‰Þÿ㳫ƢŒš•ÿ—§Î¶ÿ橉ޖÖÿל–Ö·Š¶‹r¯ŽÇÕÈœ¶‹r¯ŽíÈÿíÈ©Æ»äft–œrow¦‹¼‰ gz†èingãŸîÁÿ²Àÿ„Ð fz½¸ÿš••Öÿéï™»»É»‰ÖŠÿŒÕÕ¹ wzŒ›‰ŽµÍŒÕ wzŒ›‹²ÿ¹Ñÿ“
# Dictionary string. All the values we just dumped on the stack are popped by `ÿ`s in this string. We end up with:
# "george washington john adams thomas jefferson james madison james monroe john quincy adams andrew jackson martin van buren william henry harrison john tyler james kz polk zachary taylor millard fillmore franklin pierce james buchanan abraham lincoln andrew johnson ulysses sz grant rutherford bz hayes james az garfield chester az arthur grover cleveland benjamin harrison grover cleveland william mcqinley theodore roosevelt william howard taft woodrow wilson warren gz harding calvin coolidge herbert hoover franklin dz roosevelt harry sz truman dwight dz eisenhower john fz kennedy lyndon bz johnson richard nixon gerald ford jimmy carter ronald reagan george hz wz bush bill clinton george wz bush barack obama donald trump"

™         # title case
 „qz      # literal "qz"
    „K.   # literal "K."
       ‡  # transliterate (replaces all "q" with "K" and all "z" with "."

# This takes care of two issues at once: title casing would leave McKinley with a lowercase k, and base-27 strings can't contain "."
# We now have a long string, with all the presidents' names in order. We need to split it into 45 strings (one per president).
# We could've used a special marker to delimit the presidents, but it turns out it's more efficient to count the words in each name:

#                  # split on spaces (yes i know i've been using # for comments, but there's no actual comment character in 05AB1E)
 •¥ü„¨%¨₃Ó8•3в     # compressed list 222221211212222221111222221212211111222202122
              4α   # vectorized absolute difference with 4: 222223233232222223333222223232233333222242322
                   # this is the list of the number of words in the presidents' names
                   # (note that "George H. W. Bush" is the only 4-word name, forcing us to use base-3 instead of base-2 for the compressed list, which costs 3 bytes)

£                  # split the list of words according to the list of wordcounts: [["George", "Washington"], ..., ["Donald", "Trump"]]
 ðý                # join each sub-list with spaces

अब हमारे पास कालानुक्रमिक क्रम में 45 पूर्ण नामों की एक सूची है, इसलिए हम इस भाग के साथ काम कर रहे हैं।

भाग 2: तिथियां

तारीखों की तुलना करना आसान बनाने के लिए, हम उन्हें पूर्णांक में बदल देते हैं। यह बेस -32 से रूपांतरण के साथ किया जाता है, जो 1024 * वर्ष + 32 * माह + दिन देता है (और ध्यान नहीं देता है कि वर्ष "अंक" 32 से अधिक है)।

हम लगातार कालानुक्रमिक क्रमों की संख्या के साथ शुरू करते हैं (चुनाव जो राष्ट्रपति को नहीं बदलते हैं), रिवर्स कालानुक्रमिक क्रम में:

•9ÕS&µç©•3в   # compressed list 111010111011020000011000000101110

ओबामा, बुश और क्लिंटन के पहले तीन 1s के सभी एक बार फिर से चुने जाने के अनुरूप हैं। अकेला 2 मैकिन्ले और थियोडोर रूजवेल्ट से मेल खाता है, दोनों को एक बार फिर से देखा जा रहा है (मैकिन्ले का कार्यालय में निधन हो गया और थियोडोर रूजवेल्ट उनके उपाध्यक्ष थे, इसलिए उनके पुनर्मिलन में कोई और चुनाव नहीं था)। फ्रेंकलिन डी। रूजवेल्ट + ट्रूमैन के लिए वहाँ एक 4 होना चाहिए, लेकिन यह वह बिंदु भी है जहां उद्घाटन का दिन 4 मार्च से 20 जनवरी तक बदल गया है, इसलिए हम इस विशेष मामले को बाद में संभालते हैं।

±             # bitwise not (equivalently: add 1, then negate): [-2, -2, ..., -1]
 žD*          # multiply by 4096 [-8192, -8192, ..., -4096]

याद रखें कि 1024 का मतलब एक वर्ष है, इसलिए 4096 का मतलब पूर्ण जनादेश है। यह अब नव निर्वाचित राष्ट्रपतियों (अभी भी कालानुक्रमिक क्रम में, जिसके कारण संख्याओं का नकारात्मक होना आवश्यक है) के बीच समय की देरी की एक सूची है।

अब, उन 9 राष्ट्रपतियों की देखभाल करने की अनुमति देता है, जिन्होंने पूर्ण जनादेश की सेवा नहीं की (4 की प्राकृतिक कारणों से मृत्यु हो गई, 4 की हत्या हुई, निक्सन ने इस्तीफा दे दिया):

•¾¹iìzÓ.+,âšÜĀ‘ó₆x.»δ•žHв   # compressed list [45088, 9317, 15270, 16548, 20475, 22484, 22410, 18666, 11155, 43819]

45088 4 मार्च, 1797 (4 मार्च को पहला परिचय) से 4 अप्रैल, 1841 (कार्यालय में पहली मृत्यु) का समय डेल्टा है। निम्नलिखित संख्याएं 9 मौतों / इस्तीफे के बीच का समय देरी हैं। अंत में, 43819 9 अगस्त, 1974 (निक्सन के इस्तीफे) से 20 जनवरी, 2017 तक का समय डेल्टा है (20 जनवरी को नवीनतम परिचय)।

«             # merge the two lists of time deltas
 9._          # rotate left by 9 (the number of January 20 introductions)
    .¥        # undelta
      •U<¶•   # compressed integer 1979491, meaning March 4, 1933 (the last March 4 introduction)
           +  # add to each

अब हमारे पास उन सभी तिथियों की एक सूची है जहां राष्ट्रपति बदल गए हैं। यह आदेश थोड़ा फंकी है: यह 1933 में शुरू होता है, फिर समय में पीछे की ओर 4 मार्च का परिचय होता है, फिर समय के साथ मौतें / इस्तीफे, फिर 20 जनवरी को परिचय के साथ वापस चला जाता है। हालाँकि, ऑर्डर वास्तव में मायने नहीं रखेगा।

I             # get the input date
 32β          # convert from base 32, yielding an integer
    ‹         # vectorized compare with our list, yielding a list of 0/1 booleans
     O        # sum
      è       # use the sum to index into the list of presidents' names
              # implicit output

और हम कर रहे हैं।


1
ओह, तुम भी जेली जवाब अब हरा! बहुत अच्छा। स्पष्टीकरण देखते हुए आगे बढ़े।
केविन क्रूज़सेन

: @KevinCruijssen मैं एक विवरण (जोड़ा
ग्रिमी

2

चारकोल , 550 बाइट्स

✂⊟Φ⪪”}¶⟲φε"1It↙θ|&s1%⎚÷X2J¦T↶M↙@P≡,7gSC{WTB¿μ;↗AEoU…⁹aⅉ:(↶Þ|‹Cρr]χY↨×⪪…✳μⅉⅈ²]⌈&ρτ“↖s∕↘yⅉ⊘K%QUi&Uρ⦃→↑^_tZ}↙s⪪3#\UZ¶L↥ρ÷Qa.ρE⊞B↘¿⦃{RC⁴βLΦï←⁹″*²⌊∕~L‽∧&;⁵⪪⪪◨sFψ⊗=₂εωb5⎚∧¬Ii»S⟲H⧴⮌⁵↷≕≦-Lκ↗⦃″✂DcgSOE}PΣ℅ξ»u➙ïA⁼×◧⁴Gθkιbσ6�V→↓B⮌⦃]σ0↶L↷'Þ¡σ?αδ⪫4⁶M"‽W◨-n℅O≡o ⊙^fκ{~✳N⦄y⊟≦Kθ!«↘pB;fJ<ιU%D‴▶p|‹⌕ιHpIt‽7}u1~φνL▶⮌;NY✂S>ÞSλ<«⦃¬k⦄J⦃◧‴}v≕﹪φEβ<⁴↘la»�λ⁼.Xξ.th⊕jEχ>m4J'⁺▷αZ↷|D$⸿Sz⪪←fFωρ↓oⅉ⊙⁰vFQ0T⪫?GE▷|℅±P;χ'|x>i↨E◧⁺4M↖‴№⟦Π~‹σ_▷⁵N?6ⅉ |x+\⁺“≡C⟦⁹⁸pC⊕Dïψ?◧⎇ςΠH&]▷≧β↓⧴J<(1←¦6‽GG✂¡58Go…Qψ/§§c↷ZQ\@ςr⁹}TZ?«fPO)⧴\`↘℅⦄&yθ%⪫iλ*fÀ-ⅈ↖→◨⬤F″‖↘→⁹S#″▶Φ∨¬w◧«℅ySq§mCIπF?sⅈP⍘↷≔f‽k↥ABMX﹪”¶‹ιθχ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। आईएसओ प्रारूप में इनपुट लेता है। स्पष्टीकरण:

    ”...”       List of decremented dates and presidents
   ⪪     ¶      Split on newlines
  Φ       ‹ιθ   Keep those that precede the input
 ⊟              Take the last
✂            χ  Remove the date

2

स्टैक्स , 550 509 502 बाइट्स

ª╠TkªÑTs¬¢‼É▼╠→+╕s☼∩b°┴ò0J Öª◙%µ♪)Çb○Σ²╦àôä√P┼[╫»↓♪─y·:+x/ p~┤☺kèT┤╩☺♀◄╗*DX○e╩+ë%╫↔^║;◙/Θ╛B║K>▌GΣR╥♠╞N┬6dt♥h♪T⌠╥⌠ó←`±ΘÆM:\V►╢◘≥pe½╖→Ea}╚≤╠ΓÜ╗,πUF[╢▄¥¥▒t≥òK"=☺S╟▐ü%û▼98╕→→ñ`eB▌y↨\%Ç│╝û°6R┘K√â°◘RfçMñ♪3╦┤â╞╥┼«╧j/εⁿ○ó▀CäI3┘c▄}═%[C_%jgÿÉJÑS═g(┴`╦%êk9½é╔PT¶◄<║╕à¼╬≤`dεµc╨╔?Z=╧╥RDΓl.┘uFⁿ∟Juö♥,╠╛z¡ÇM7m☺╩?ïPª$πä♂ ╝Jò'æφ▬♠w►○ôr├=é┴╪ù#?∩E↓╣J∩╒░▒○LÑ∞¥╗å▐Ü└ä∙↨l♀╠├d┴Uÿ╩(╔♦)═╦¢αe£/bΦ╜%d$Öä¢M║╖q]¢╝8╨ÖBÿ┼÷{@0╕/#└â╪~V§πp<≡k♫á∩g4üÉà↔DR[√á√ü.îºV'X♥9↔øiè²≈τoæ┴0☻ó╪!‼⌡¼'↔ δ'X⌂■OpX¬E╡░├a"√4lB<└♣A╪º╕4íbz♠ìÿ°Γ═àÅ└5äº5æ2§ΩWª

इसे चलाएं और डीबग करें, जिसमें केविन क्रूज़सेन के परीक्षण भी शामिल हैं

यह प्रोग्राम सही तरीके से निष्पादित होता है, लेकिन यदि आप "Uncompress Literals" टूल का उपयोग करते हैं, तो यह स्रोत कोड को दूषित कर देगा। यह दो पूर्णांक शाब्दिक को एक दूसरे के ठीक बगल में रखता है, जो एक बड़ा शाब्दिक बनाता है। बेशक, कि मूल कार्यक्रम के रूप में एक ही काम नहीं करता है।

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