जावा / .NET / C / जावास्क्रिप्ट / आदि में। यदि आप बयानों को छोटा करने के लिए टर्नरी-आईएफ का उपयोग कर सकते हैं।
उदाहरण के लिए (जावा में):
// there is a String `s` and an int `i`
if(i<0)s="Neg";else if(i>0)s="Pos";else s="Neut";
के साथ छोटा किया जा सकता है-यदि:
s=i<0?"Neg":i>0?"Pos":"Neut";
चुनौती:
इनपुट: एक नियमित अगर-और (घोंसले के शिकार के साथ संभव) जो एक एकल चर सेट करता है।
आउटपुट: परिवर्तित टर्नरी-यदि।
चुनौती नियम:
- आप यह मान सकते हैं कि सभी और-और मामले बिना कोष्ठक के संभव हैं (इसलिए प्रत्येक if / else-if / अन्यथा ब्लॉक में एक एकल निकाय है)।
- आप मान सकते हैं कि प्रत्येक
else
(सहितelse if
) के बाद एक ही स्थान को छोड़कर, कोई स्थान, टैब या नई-लाइनें नहीं होंगी । - आप मान सकते हैं कि उपयोग किए जाने वाले चर नाम हमेशा एक एकल लोअरकेस अक्षर (
[a-z]
) होते हैं। - चर को दिए गए मान निम्न में से एक हो सकते हैं:
- स्ट्रिंग्स, जो डबल उद्धरण से घिरा हो जाएगा (यानी (रिक्त स्थानों / टैब / नई लाइनों के बिना)
"Test"
,"SomeString"
,"Example_string"
, आदि)। आप यह मान सकते हैं कि स्ट्रिंग्स में कभी भी सबस्ट्रिंग नहीं होंगेif
याelse
न ही इसमें स्पेस, टैब, न्यूलाइन, (बच गए) डबल-कोट्स या कैरेक्टर होंगे=
। इसमें वर्ण शामिल हो सकते हैं><(){}[];?:!&|
, लेकिन मुद्रण योग्य ASCII रेंज में ही होंगे (['!' (33), '~' (126)]
)। - पूर्णांकों (यानी
0
,123
,-55
, आदि) - दशमलव (यानी
0.0
,0.123
,-55.55
, आदि)
- स्ट्रिंग्स, जो डबल उद्धरण से घिरा हो जाएगा (यानी (रिक्त स्थानों / टैब / नई लाइनों के बिना)
- मान कभी मिश्रित नहीं होंगे। इसलिए असाइन किए गए सभी चर पूर्णांक हैं, और कुछ पूर्णांक नहीं हैं और कुछ तार हैं।
- कोष्टक के भीतर की स्थिति निम्न वर्ण हो सकते
=<>!+-/*%&|[]
,a-z
,0-9
। आप मान सकते हैं कि कोई आंतरिक कोष्ठक नहीं होगा, और आप यह भी मान सकते हैं कि एक से अधिक वर्ण (जैसेif(if<0)
) के किसी भी (भ्रामक) क्षेत्र नहीं होंगे । - आप मान सकते हैं कि
i*=10
इसके बजाय कोई भी शॉर्ट-कट नहीं होगाi=i*10
। - आपको झूलने के
else
मामलों को संभालने की आवश्यकता नहीं होगी , इसलिए सभीif
को एक साथ जोड़ा जा सकता हैelse
। Ieif(a)if(b)r=0;else r=1;
एक संभावित इनपुट-केस नहीं है।if(a)if(b)r=0;else r=1;else r=2;
याif(a&&b)r=0;else if(a&&!b)r=1;else r=-1;
फिर भी हैं। - I / O लचीला है। इनपुट और आउटपुट एक स्ट्रिंग हो सकता है, पात्रों की सूची, एसटीडीआईएन से पढ़ सकते हैं, एसटीडी के बारे में आउटपुट, आदि। आपका कॉल।
- सभी ternaries में एक समरूपता होगी, जैसा कि अधिकांश भाषाओं में मानक है ( लेकिन उदाहरण के लिए PHP में नहीं )।
सामान्य नियम:
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव कम उत्तर के साथ आने की कोशिश करें। - मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-टाइप, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति दी जाती है। तुम्हारा फोन।
- डिफ़ॉल्ट लूपोल्स निषिद्ध हैं।
- यदि संभव हो, तो कृपया अपने कोड के लिए एक परीक्षण के साथ एक लिंक जोड़ें।
- इसके अलावा, यदि संभव हो तो एक स्पष्टीकरण जोड़ें।
परीक्षण के मामलों:
Input: if(i<0)s="Neg";else if(i>0)s="Pos";else s="Neut";
Output: s=i<0?"Neg":i>0?"Pos":"Neut";
Input: if(i%2<1)r=10;else r=20;
Output: r=i%2<1?10:20;
Input: if(n<10)if(m<0)i=0;else i=10;else if(m<0)i=-1;else i=1;
Output: i=n<10?m<0?0:10:m<0?-1:1;
Input: if(i==1)i=0.0;else i=0.25;
Output: i=i==1?0.0:0.25;
Input: if(!a)if(b)r=0;else r=1;else r=2;
Output: r=!a?b?0:1:2;
Input: if(a)if(b)r=0;else r=1;else if(c)r=2;else r=3;
Output: r=a?b?0:1:c?2:3;
Input: if(a&&b)r=0;else if(a&&!b)r=1;else r=-1;
Output: r=a&&b?0:a&&!b?1:-1;
Input: if(i[0]>0)if(j>0)if(q>0)r="q";else r="j";else r="i";else r="other";
Output: r=i[0]>0?j>0?q>0?"q":"j":"i":"other";
Input: if(i>0)r="i";else if(j>0)r="j";else if(q>0)r="q";else r="other";
Output: r=i>0?"i":j>0?"j":q>0?"q":"other";
Input: if(a>0)if(a<2)x="one";else if(a<3)x="two";else if(a<4)x="three";else x="other";else x="other";
Output: x=a>0?a<2?"one":a<3?"two":a<4?"three":"other":"other";
Input: if(b[0]<=b[1])q=5;else if(b[0]==null)q=0;else q=-10;
Output: q=b[0]<=b[1]?5:b[0]==null?0:-10;
if ... then ... else
में टर्नरी ऑपरेटर है। इसलिए अगर आप लिखते हैंlet result = if 10 > 100 then 99 else -99
तो इसका मूल्यresult
होगा-99
।