क्या मैं एक इंजीनियर हूं?


42

हाल ही में ट्रैफिक लाइट टाइमिंग का अध्ययन करने वाले एक इलेक्ट्रिकल इंजीनियर पर खुद को एक इंजीनियर के रूप में संदर्भित करने के लिए ओरेगन राज्य द्वारा $ 500 का जुर्माना लगाया गया था ।

इनपुट के रूप में एक 2 अक्षर स्ट्रिंग को देखते हुए, एक अमेरिकी राज्य, आउटपुट का प्रतिनिधित्व करता है:

  • I am not an engineerयदि राज्य ओरेगन है ( OR)
  • I am an engineer यदि राज्य किसी अन्य अमेरिकी राज्य है
  • What is an engineer? कोई अन्य इनपुट दिया

आउटपुट में कोई भी प्रमुख व्हाट्सएप नहीं हो सकता है , लेकिन आप जितना चाहें उतने अनुगामी व्हॉट्सएप हो सकते हैं ।

आप मान सकते हैं इनपुट हमेशा 2 बड़े अक्षर होंगे।

यहाँ सभी 50 अमेरिकी राज्य संक्षिप्त सूची दी गई है:

AL, AK, AZ, AR, CA, CO, CT, DE, FL, GA, HI, ID, IL, IN, IA, KS, KY, LA, ME,
MD, MA, MI, MN, MS, MO, MT, NE, NV, NH, NJ, NM, NY, NC, ND, OH, OK, OR, PA,
RI, SC, SD, TN, TX, UT, VT, VA, WA, WV, WI, WY

स्कोरिंग

यह , इसलिए प्रत्येक भाषा में सबसे कम बाइट्स जीतता है!


क्या मेरे पास आउटपुट में एक अनुगामी स्थान हो सकता है?
बिजनेस कैट

@BusinessCat हां, यह कहने के लिए कल्पना को अद्यतन करेगा कि
स्काइड्सडेव

4
साइड नोट: यदि आप पूरे स्ट्रिंग को एक साथ जोड़ते हैं, तो आपको "... OKOR PARIS CSDTN ..." ;-)
Mateen Ulhaq

Mats Järlström को खुद को टेक्सास में इंजीनियर के रूप में पेश करने की अनुमति नहीं होगी।
बेन वोइगट

जवाबों:


17

सी #, 311 309 240 237 222 195 184 183 बाइट्स

s=>s=="OR"?"I am not an engineer":"MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY".Contains(s)?"I am an engineer":"What is an engineer?";

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

से पहले स्थान जोड़कर 2 बाइट्स सहेजे anगएb

-69 (ह्यूएयू) -72 बाइट्स थेलीथेलकर के लिए धन्यवाद

-15 बाइट्स टोलीहुमन के जीनियस स्टेट्स के लिए धन्यवाद

-38 बाइट्स अधिक स्ट्रिंग संपीड़न

Ungolfed:

public static string a(string s)
{
    var b = " an engineer";
    if (s == "OR")
    {
        return "I am not" + b;
    }
    else
    {
        if ("MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY".Contains(s))
        {
            return "I am" + b;
        }
        else
        {
            return $"What is{b}?";
        }
    }
}

का प्रयोग करें ..."+bअंतर्वेशित तार के बजाय, परिवर्तन if..else if...elseकरने के लिए return s=="या" ....: System.Arr ... `यानी एक त्रिगुट का उपयोग करें। के u.Containsबजाय का उपयोग करें Array.Exists। मुझे लगता है कि अगर आप कॉमा के बजाय रिक्त स्थान का उपयोग करते हैं, तो .Split()कोई भी काम नहीं करेगा।
TheLethalCoder

एक ही लाइन में बी और यू घोषित करें और भले ही आपको स्पष्ट प्रकार का उपयोग करना हो, फिर भी आपको एक बाइट
बचानी

@StefanDelport uएक सरणी है जो स्ट्रिंग नहीं है। हालाँकि, आप बाइट्स uको एक स्ट्रिंग के रूप में सेट करके और .Containsउस पर उपयोग करके बचा सकते हैं ।
TheLethalCoder

240 बाइट्स s=>{var b=" an engineer";return s=="OR"?"I am not"+b:"AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK PA RI SC SD TN TX UT VT VA WA WV WI WY".Contains(s)?"I am"+b:$"What is{b}?";};:। सोचें कि मैंने सभी संबंधित व्हाट्सएप को हटा दिया है। (
अनटाइटेड

1
आप कुछ बाइट्स को बचाने के लिए एक अलग चर के रूप में "एक इंजीनियर" को परिभाषित करके इसे गोल्फ कर सकते हैं।
OldBunny2800

11

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

s=>['I am'+(x=' an engineer'),`What is${x}?`,'I am not'+x][s=='OR'?2:'MNNMLATNAKALARAZCACOCTDEFLGAHIIAIDILINKSKYMAMDMEMIMOMSMTNCNDNENHNJNVNYOHOKPARISCSDTXUTVAVTWAWIWVWY'.search(s)&1]

डेमो


3
उदाहरण के लिए विफल LA: /
क्रिस्टोफ

@ क्रिसटोफ़ अब ठीक होना चाहिए। यह रिपोर्ट करने के लिए धन्यवाद!
अरनुलद

सोचा कि यह गायब था या पल के लिए - मूर्खतापूर्ण!
चास ब्राउन

अनुकूलन करने के लिए codegolf.stackexchange.com/a/124164/76323 का उपयोग करें
l4m2

8

सी, 215 208 190 बाइट्स

-7 कूल गाइ के लिए धन्यवाद

#define z" an engineer"
#define f(s)!strcmp(s,"OR")?"I am not"z:strstr("MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY",s)?"I am"z:"What is"z"?"

@ पूरी तरह से "जीनस स्ट्रिंग" का इस्तेमाल किया।

यह काम किस प्रकार करता है:

  • "string"zस्वचालित रूप से "string"साथ z( " an engineer")। हां, सी ऐसा करता है।
  • !strcmp(s,"OR") "OR" के विरुद्ध स्ट्रिंग की तुलना करता है।
  • ?"I am not"z"अगर मैं एक इंजीनियर नहीं हूँ" तो सही है। अन्यथा...
  • :strstr(...,s) जाँच करता है कि @ पूरी तरह से हनुमान की जीन स्ट्रिंग में स्ट्रिंग उपलब्ध है।
  • ?"I am"z रिटर्न "मैं एक इंजीनियर हूँ" यदि ऐसा है, और ...
  • :"What is"z"?")रिटर्न "एक इंजीनियर क्या है?" अन्यथा।

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


1
206 बाइट्स:#define z " an engineer" f(char*s){!strcmp(s,"OR")?puts("I am not"z):strstr("MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY",s)?puts("I am"z):puts("What is"z);}
स्पिकट्रिक्स

@CoolGuy "क्या एक इंजीनियर है?" लेकिन मुझे यह 209 बाइट्स में काम करने के लिए मिला। धन्यवाद!
एमडी एक्सएफ

आप स्ट्रिंग को प्रिंट करने के बजाय लौटा सकते हैं
l4m2

@ l4m2 ने कुछ ऐसा ही किया।
एमडी एक्सएफ


5

पायथन 2 , 192 186 182 178 176 बाइट्स

शायद राज्य स्ट्रिंग को अधिक संकुचित कर सकता है।

lambda s,e=' an engineer':'I am'+' not'*(s=='OR')+e if s in'MINCALAZ SCT FL GA WIAKSD ME MD MA MNMS MOKY MTNE NVTX NH NJ NY ND COHIDE OR PARIL UT VA WA WV WY'else'What is%s?'%e

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


2
आप केवल का उपयोग uमें if s in uआप सीधे बजाय इसका इस्तेमाल नोट कर सकते हैं यह घोषणा की?
TheLethalCoder

1
@totallyhuman कि स्ट्रिंग संपीड़न बहुत अद्भुत है, अच्छा है!
स्किड्सदेव

2
@totallyhuman VALA WAZ NCA COH CTX SDE FL GA HID WIL MIN IAKSC KY ME MD MA MNMS MOK MTNE NH NJ NY ND PARI UT NVT WV WYसबसे छोटा है मैं इसे बना सकता हूं
स्काइड्सडेव

2
'MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY'
फेलिप नारदी बतिस्ता

2
वूप्स, सॉरी मुझे इतना समय लग गया। लगता है कि मैं उस स्ट्रिंग को कॉपी करने के रूप में खो गया हूं, इसका उपयोग करने वाले की तुलना में मेरा उत्तर बेहतर नहीं है। कृपया इसे रोकना और दूसरे बेहतर उत्तर को बढ़ावा देना।
जुआन

5

जावा (JDK 10) , 184 बाइट्स

s->s.format(s.equals("OR")?"I am not%s":"MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY".contains(s)?"I am%s":"What is%s?"," an engineer")

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

मैं संकुचित स्ट्रिंग के पुन: उपयोग के लिए माफी माँगता हूँ: मैं अपने आप से कुछ भी बेहतर नहीं पा सका ... :(


4

05AB1E , 104 103 101 बाइट्स

„€À€ˆ„I€Ü‚.•~Zµ∞/'—¶[@øl•Œ2ù.•9₆\|&׃Ω#àöF},cΓ páe;ð²∍₆jÌn#dÅ?DvĆ8A•2ôìuIå©è¹„ORQi'€–}„€¤©É)ðýª'?®_×J

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

पुराने 104 बाइट संस्करण जो कि अधिक आसानी से सुधारे जाते हैं।

„€À€ˆ„I€Ü‚.•ÂkXñ…ΓVt€Ïè∍‡Λi„2¶’að=–½6™oÑþÁāõgO·ð~
λ†₃›;â&ÄFv¾‡1~ǝQa«;cS•u2ôIå©è¹„ORQi'€–}„€¤©É)ðýª'?®_×J

संपीड़न के साथ खुश नहीं और न ही विशेष मामले के लिए ?


ठीक है यह क्या है? क्या आपने सिर्फ राज्यों या कुछ को फिर से आदेश दिया?
आउटगोल्फ

@EriktheOutgolfer: 104 बाइट संस्करण वर्णमाला के वर्ण पदों के अनुरूप संख्याओं का एक संपीड़न मात्र है (A=1,C=3 ...)। 103 बाइट संस्करण कुछ राज्यों के लिए ऐसा ही करता है और कुछ राज्यों को विलय करता है जो उसी पत्र में समाप्त होते हैं जिसके साथ एक नया राज्य शुरू होता है। मुझे यकीन है कि यह अभी भी सुधार किया जा सकता है और जब मैंने इसे और अधिक गोल किया है तो मैं एक बेहतर स्पष्टीकरण जोड़ूंगा।
इमीना

1
अच्छा जवाब! मुझे पसंद है कि .•~Zµ∞/'—¶[@øl•Œ2ùआपने कुछ राज्यों के लिए उपयोग किया है, बजाय सभी राज्यों को संकुचित करने और करने के । और कुल मिलाकर अच्छा दृष्टिकोण। (ख़ुशी है कि मैंने आपका जवाब खुद कुछ
आज़माने

4

एफ # , 222 बाइट्स

let f v=let (a,b)=if ("WALAKSCARINMNVTNCTX NHIDE MOHIL COKY MSD PAZ WIA WVA FL GA MA MD ME MI MT NE ND NJ NY UT WY").Contains v then ("I am",".") elif "OR"=v then ("I am not",".") else ("What is","?") in a+" an engineer"+b

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

विस्तारित:

let f v =
    let (a, b) =
        if ("WALAKSCARINMNVTNCTX NHIDE MOHIL COKY MSD PAZ WIA WVA FL GA MA MD ME MI MT NE ND NJ NY UT WY").Contains v then ("I am", ".")
        elif "OR" = v then ("I am not", ".")
        else ("What is", "?")
    a + " an engineer" + b

एक दो अक्षर वाले राज्य v को फ़ंक्शन f में दिया गया , "इंजीनियर" वाक्य के सिर और पूंछ का प्रतिनिधित्व करते हुए एक ट्यूपल (ए, बी) का निर्माण करें।

स्वतंत्र रूप से "संपीड़ित राज्य स्ट्रिंग" का उपयोग करने के लिए स्वतंत्र महसूस करें; यह MINCALA की तुलना में एक छोटा बाइट है ...


4

आर , 109 96 बाइट्स

function(x)sub("#"," an engineer",c("I am not#","I am#","What is#?"))[2-x%in%state.abb+!x=="OR"]

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

13 बाइट्स जे। डी को धन्यवाद - रेगेक्स और इंडेक्सेशन के उपयोग के माध्यम से।



1
@ J.Doe subबहुत बेहतर है, धन्यवाद!
JayCe


@ जे। बेशक!
JayCe

3

जाप , 136 135 131 129 128 बाइट्स

राज्य संक्षिप्तियों के क्रम के साथ प्रयोग करके अधिक बचत उपलब्ध हो सकती है - मैं थोड़ी देर में वापस आऊंगा।

`mnnmlãGLÏz¯¬ct¸flgaá[9¨kyµmçpCijmsmtnhnvnyn¬kpÂÉcsdk¡x©vavt°±wvwy`ò øUv)?"I am {¥"OR"?"not ":P}"+` à¨\ `:`Wt   à¨\?

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


व्याख्या

  • हम निम्न संक्षिप्त संक्षिप्तीकरण का एक संकुचित स्ट्रिंग लेते हैं, इसे विघटित करते हैं, और इसे òविधि का उपयोग करके 2 वर्ण स्ट्रिंग्स की एक सरणी में विभाजित करते हैं ।
  • फिर हम øयह देखने के लिए विधि का उपयोग करते हैं कि क्या सरणी में है Uv, जो कि इनपुट स्ट्रिंग को लोअरकेस में परिवर्तित किया गया है।
  • यदि हम ऐसा करते हैं, तो हम अपने आउटपुट स्ट्रिंग का निर्माण करते हैं, जिसके साथ शुरुआत होती है "I am "
  • यह जाँचने पर कि इनपुट स्ट्रिंग ¥(बराबर है) "OR"हमें "not "या तो या रिक्त स्ट्रिंग चर को जोड़ने की अनुमति देती है P
  • और फिर हम संपीड़ित स्ट्रिंग को विघटित और जोड़ते हैं "an engineer"
  • यदि इनपुट सरणी में नहीं मिला था, तो हम संपीड़ित स्ट्रिंग के विघटन का उत्पादन करते हैं "What is an engineer?"

3

पायथन 3 , 180 179 178 बाइट्स

def f(s):e=" not"*(s=="OR")+" an engineer";return"I am"+e if s in"PALAKSCAZ CTNMINCOR FL GA MDE ME MND MA MSD MOKY NE NH NJ NY WA OHID UTX MTNVARIA WIL WVT WY"else"What is"+e+"?"

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


हां, यह सही है: इसे ऑनलाइन आज़माएं!
int6h

166 बाइट्स । मुझे यकीन है कि राज्यों को पुन: उपयोग करके स्ट्रिंग को और भी अधिक मजबूत किया जा सकता है
जो किंग

धन्यवाद @JoKing यह इस बिंदु IMO :) पर पायथन 2 के उत्तर से बहुत मिलता जुलता है। मैं स्ट्रिंग को संपीड़ित करने की कोशिश कर रहा हूं, लेकिन सबसे छोटा मैं 92 प्रतीकों को प्राप्त कर सकता था। मैंने ऐसा करने के लिए एक छोटी स्क्रिप्ट लिखी है, लेकिन यह केवल 94 वर्णों तक ही कटौती कर सकता है, और यह आशा के अनुरूप नहीं है। मुझे यह भी लगता है कि इस विशेष चुनौती में मैजिक स्ट्रिंग को बाइट की गिनती में शामिल नहीं किया जाना चाहिए।
int6h

2

सीजेएम , 143 बाइट्स

"ORIA MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY"q#g"I am not 
I am 
What is?"N/=)" an engineer"\

इसे ऑनलाइन आज़माएं! या एक परीक्षण सूट के रूप में

व्याख्या

"ORIA...."       e# Push a string in which every state is a substring, but no non-state is
                 e# a substring.
q                e# Read the input.
#                e# Find the index of the input in the string. (-1 if not found)
g                e# Signum of the index: -1 for negative, 0 for 0, 1 for positive.
"I am.... "      e# Push this string. Note the trailing space on the first two lines of it.
N/               e# Split it on newlines.
=                e# Get the string at index given by the signum.
)                e# Pull out the last character.
" an engineer"\  e# Push " an engineer" and bring the other character to the TOS.
                 e# Implicit output.

चूंकि ओरेगन ( OR) स्ट्रिंग की शुरुआत में है, उस में इनपुट के सूचकांक के संकेत को खोजना -1 होगा यदि नहीं मिला, 0 अगर OR, 1 यदि कोई अन्य राज्य। किस स्ट्रिंग को प्रिंट करना है, यह उसके द्वारा तय किया जा सकता है।


2

PHP, 188 बाइट्स

$e=" an engineer";echo strpos(_TNNMLAALAKAZARCACOCTDEFLGAHIIDILINIAKSKYMEMDMAMIMNMSMOMTNENVNHNJNYNCNDOHOKORPARISCSDTXUTVTVAWAWVWIWY,$argn)&1?"I am".($argn!="OR"?"":" not").$e:"What is$e?";

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


in_array(...)को strpos(_AKALARAZCACOCTDEFLGAHIIAIDILINKSKYLAMAMDMEMIMNMOMSMTNCNDNENHNJNMNVNYOHOKPARISCSDTNTXUTVAVTWAWIWVWY,$argn)&1
क्रिस्टोफ


हम्म सही: / शायद हम स्ट्रिंग को थोड़ा फिर से कर सकते हैं .. मैं कोशिश करूँगा। Js उत्तर btw को भी अमान्य करता है।
क्रिस्टोफ

_NMMNINTNRIHIMIWISCNCCTMTUTVTWVNVFLILCAALGAIAMAPAVAWACOLAMOAKARKSMSNHOHOKORAZDEIDKYMEMDNENJNYNDSDTXWYकाम करता है
क्रिस्टोफ

@ क्रिस्‍टोफ या मेरा ऑर्डर भी काम करता है।
जॉर्ग हल्सरमैन

2

सी #, 178 बाइट्स

s=>(s=="OR"?"I am notx":"MINCALA MSCTNMNVAKY WAZ PARIA FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY".Contains(s)?"I amx":"What isx?").Replace("x"," an engineer");

सी # पैड में चलाएं

माय्यूब के समाधान पर आधारित गोल्फ ; यहाँ नया है, इसलिए मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिनिधि नहीं है।


उसके समाधान में एक लिंक को संपादित करना चाह सकते हैं :) यदि आप उसके समाधान पर शेयर पर क्लिक करते हैं, तो यह आपको सीधे एक लिंक देता है।
स्टीफन

@StephenS टिप के लिए धन्यवाद!
आर्थर रम्प

2

हास्केल , 220 214 210 209 बाइट्स

s(a:b:c)=[a,b]:s(b:c)
s _=[]
a="I am "
e="an engineer "
i"OR"=a++"not "++e
i x|x`elem`s"MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY"=a++e
i _="What is "++e++"?"

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


अन्यथा = सच है, 1<2और भी छोटा है
BlackCap

फेसपालम , धन्यवाद!
बर्तवेल्ले

आपने ORi
BlackCap

मैंने अन्य उत्तरों से लंबी स्ट्रिंग चुरा ली। या हालांकि इसका हिस्सा नहीं है?
बर्तवेल्ले

1
नहीं, अब और नहीं :)
ब्लैककैप

1

जावास्क्रिप्ट 204

s=>{h=/^(A[LKZR]|C[AOT]|DE|FL|[GPLV]A|[HR]I|I[DLNA]|K[SY]|M[EDAINSOT]|N[EVHJMYCD]|O[HK]|S[CD]|T[NX]|[VU]T|W[AVIY]|(OR))$/.exec(s);return(!h?"What is ":"I am "+(h[2]?"not ":""))+"an engineer"+(!h?'?':'')}

1
शुद्ध अनुकूलनs=>(!(h=/(A[LKZR]|C[AOT]|DE|FL|[GPLV]A|[HR]I|I[DLNA]|K[SY]|M[EDAINSOT]|N[EVHJMYCD]|O[HKR]|S[CD]|T[NX]|[VU]T|W[AVIY])/.test(s))?"What is":"I am"+(s=='OR'?" not":""))+" an engineer"+['?'[+h]]
l 9m2

@ l4m2 अच्छा है, कि मेरा जवाब हरा दिया गया है।
मार्टिन

1

AWK, 189 बाइट्स

/A[LKZR]|C[AOT]|DE|FL|[GPV]A|HI|I[DLNA]|KS|KY|LA|M[EDAINSOT]|N[EVHJMYCD]|O[HKR]|RI|SC|SD|TN|TX|UT|VT|W[AVIY]/{print"I am "($0~OR?"not ":"")"an engineer";exit}
{print"What is an engineer?"}

यदि इनपुट सभी राज्यों के संक्षिप्तीकरण वाले रेगेक्स से मेल खाता है, तो "मैं एक इंजीनियर हूँ" को बीच में एक 'नहीं' के साथ डालें यदि राज्य ओरेगन है, तो बाहर निकलें।

यदि इनपुट रेगेक्स से मेल नहीं खाता है, तो यह अमेरिकी राज्य का संक्षिप्त नाम नहीं होना चाहिए।


1

पायथन 3, 238 बाइट्स

def f(x):s=x in('ALAKAZARCACOCTDEFLGAHIIDILINIAKSKYLAMEMDMAMIMNMSMOMTNENVNHNJNMNYNCNDOHOKORPARISCSDTNTXUTVTVAWAWVWIWY'[i:i+2]for i in range(0,100,2));o=x=='OR';q=(1-o)*(1-s);return q*'What is'+(1-q)*('I am'+o*' not')+' an engineer'+q*'?'

व्याख्या

कोई संपीड़न तकनीक का इस्तेमाल नहीं किया।

def f(x):
    # Check if State
    s = x in ('ALAK...WIWY'[i:i+2]
              for i in range(0, 100, 2))

    # Check if Oregon
    o = x == 'OR'

    # Check if neither Oregon nor State
    q = (1-o) * (1-s)

    # Construct output string
    return q * 'What is' + \
        (1-q) * ('I am' + o * ' not') + \
        ' an engineer' + \
        q * '?'

यह ओरेगन है, ओहियो नहीं।
L3viathan

1
@ L3viathan मुझे यकीन नहीं है कि ओरेगन को हर जगह देखने के बाद मैं कैसे गड़बड़ करता हूं क्योंकि लाइफ अजीब है ... _ \ _ (¯) _ / ツ
Mateen Ulhaq

1

जावा, 173 बाइट्स

s->(!"MINCALARIA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY OR".contains(s)?"What is":"I am"+(s.equals("OR")?" not":""))+" an engineer"

3
PPCG में आपका स्वागत है! सभी प्रविष्टियों को एक पूर्ण कार्यक्रम या एक समारोह होना चाहिए; मेरा मानना ​​है कि आप इसे s->शुरुआत में जोड़कर एक वैध लैम्ब्डा अभिव्यक्ति (और इसलिए फ़ंक्शन) में बदल सकते हैं ।
ETHproductions

1

स्टैक्स , 100 बाइट्स

यह भाषा चुनौती देती है। लेकिन लेखक (मुझे) ने अब तक इसे नहीं देखा था।

éë&W≈#W¬π█▐╜╣╟◙√a☻∞ZrπU♫ÿô♠▌⌠Që≡AûpI⌡ÄNA綵↑╝╣òøΩ.¬É]╩Æ↓d∩é¡2ŲeB┼¼▬5∟┤sW♠♂↑q▐WMï╝|Ñ↑╫+3¼↔îûvlLΩ∟┬oë

इसे चलाएं और डीबग करें


1

जावास्क्रिप्ट ईएस 6, 175 171 बाइट्स

x=>[`What is${e=" an engineer"}?`,`I am${x=="OR"?" not"+e:e}`][+!!'MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY'.match(x)]

बहुत से अच्छे शामिल हुए

या आईएसओ एनकोडिंग पर 152 बाइट्स

जनरेटर:

'x=>[`What is${e=" an engineer"}?`,`I am${x=="OR"?" not"+e:e}`][+!!btoa`*`.match(x)]'.replace('*',atob('MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WY '.replace(/ /g,'/')))

यह संभव हो सकता है ताकि स्ट्रिंग को पुनर्व्यवस्थित किया जा सके ताकि विस्तार के लिए btoa का उपयोग किया जा सके
l4m2


1

पॉवर्सशैल, 175 बाइट्स

(('I am'+' not'*!($i='ORIA MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY'.IndexOf($args))+($e=' an engineer')),"What is$e`?")[!++$i]

टेस्ट स्क्रिप्ट:

$f = {

$e=' an engineer'
$i='ORIA MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY'.IndexOf($args)
(('I am'+' not'*!$i+$e),"What is$e`?")[!++$i]

# Important! OR is a first state in the modified @totallyhuman's genuis string

}

@(
    ,('OR', 'I am not an engineer')
    ,('AL', 'I am an engineer')
    ,('IL', 'I am an engineer')
    ,('ZZ', 'What is an engineer?')
) | % {
    $s,$e = $_
    $r = &$f $s
    "$($r-eq$e): $r"
}

आउटपुट:

True: I am not an engineer
True: I am an engineer
True: I am an engineer
True: What is an engineer?

0

पायथन 3 , 236 182 181 बाइट्स

lambda s:'I am not'+e if s=='OR'else'I am'+e if s in'MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH RIA UT WVT WIL WY'else'What is%s?'%e
e=' an engineer'

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

TIO में सभी राज्यों के लिए परीक्षण मामले शामिल हैं।
-54 बाइट्स स्ट्रिंग संपीड़न के लिए धन्यवाद


बाइट्स को बचाने के लिए आप अन्य उत्तरों से स्ट्रिंग कंप्रेशन का उपयोग कर सकते हैं
TheLethalCoder

1
MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH ORIA UT WVT WIL WYबेहतर सम्पीडन है
स्किड्सदेव

0

क्यू / केडीबी +, १ by४ बाइट्स

उपाय:

{a:" an engineer?";$[(#:)l:ss["ORIA MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY";x];-1_"I am",$[l~(),0;" not";""],a;"What is",a]}

स्पष्टीकरण:

  {
  // save string into variable a
  a:" an engineer?";
  // try to find the input x in the condensed string, save location in variable l, $ is a if/else
  $[(#:)l:ss["ORIA MINCALA MSCTNMNVAKY WAZ PAR FL GA NHID COKSD ME MDE MA MTX NE NJ NY ND MOH UT WVT WIL WY";x];
  // found a match, check if it was at index 0 ('OR') and inject " not" if so, drop the '?' off the end
  -1_"I am",$[l~(),0;" not";""],a;
  // otherwise return 'What is an engineer?'
  "What is",a]
  }

टिप्पणियाँ:

अन्य जवाबों से 'संपीड़ित' स्ट्रिंग का उपयोग किया, aचर के असाइनमेंट से बचने के लिए इसे एक लाइन में लाने का एक तरीका खोजने के लिए संघर्ष कर रहा है (फिर भी ?इनपुट जोड़ने की स्थिति नहीं है।


0

रेटिना , 175 बाइट्स

..
I am $&~MINCALAZ SCT FL GA WIAKSD ME MD MA MNMS MOKY MTNE NVTX NH NJ NY ND COHIDE PARIL UT VA WA WV WY
(..)~.*\1.*
~
OR~.*
not ~
I am ..~.*
What is ~?
~
an engineer

इसे ऑनलाइन आज़माएं! उम्मीद है कि मैंने सर्वश्रेष्ठ राज्य सूची में नियुक्ति की है। स्पष्टीकरण:

..
I am $&~MINCALAZ SCT FL GA WIAKSD ME MD MA MNMS MOKY MTNE NVTX NH NJ NY ND COHIDE PARIL UT VA WA WV WY

परिणाम का निर्माण शुरू करें। इसके अलावा, अगले चरण तक उपयोग के लिए राज्य सूची डालें।

(..)~.*\1.*
~

यदि यह 49 राज्यों में से एक है, तो राज्य और सूची को हटा दें।

OR~.*
not ~

यदि यह ओरेगन है, तो राज्य को प्रतिस्थापित करें not, और सूची को हटा दें।

I am ..~.*
What is ~?

यदि यह कुछ और है, तो अन्य आउटपुट के साथ सब कुछ बदलें।

~
an engineer

पुनरावृत्ति से बचने के लिए अंतिम में इन शब्दों को जोड़ें।


0

क्रिस्टल, 232 207 205 बाइट्स

i="ORALAKAZARCACOCTDEFLGAHIIDILINIAKSKYLAMEMDMAMIMNMSMOMTNENVNHNJNMNYNCNDOHOKPARISCSDTNTXUTVTVAWAWVWIWY".split(/(..)/).index ARGV[0];p (i ?"I am ": "What is ")+(i==1 ?"not ": "")+"an engineer"+(i ?"": "?")

इसे ऑनलाइन आज़माएं । (ARGV के एक मुद्दे के कारण थोड़ा संशोधित)


0

फैक्टर, 135 बाइट्स

USE: usa-cities [ " an engineer"swap [ "I am"swap string>state OR = 
[ " not"append ] when ""] [ 2drop "What is" "?"] recover surround ]

अधिक पठनीय, और नामित:

: engineer? ( state-name -- str ) 
  [ " an engineer" ] dip ! put this below the input on the stack 
  [ 
    [ "I am" ] dip       ! put this below the input too but above the other 
    string>state OR =    ! string>state throws on a non-state name 
    [ " not" append ] when ""  ! otherwise and if it is OR, append this 
  ] 
  [ 2drop "What is" "?" ] recover surround ; ! catch error, surround string

[ x ] dipऔर x swapस्टैक इफ़ेक्ट के बराबर हैं लेकिन पहले केवल नेस्टेड होने पर छोटा होता है [ [ [ x ] dip ] dip ] dip:।


0

पायथन 2, 213 211 194 बाइट्स

c="uTXnMSCORIDEwVAKYmTNHILfLAZpALmNEmOKSDwINCARmEwAnJnDmAmIAgAwYcTnVToHnYmD"
r=(lambda x:x in c or x[0].lower()+x[1]in c)(i)^1
u="What is "*r+("I am "+"not "*(i=="OR"))*(r^1)+"an engineer"+"?"*r

यह ऑनलाइन की कोशिश करो

छोटा करने पर काम कर रहा हूँ:

  • (i=="OR")
  • or x[0].lower()+x[1]in c

अपडेट करें:

  • के s=not rसाथ प्रतिस्थापित करके 2 बाइट्स सहेजे गएs=r^1
  • कोड के अलग हेडर और पाद

0

रूबी, 164 बाइट्स

->s{r="What is an engineer?"
j=379
"##(*Q0'7q;N>%*$o(.F%#&'#&#5##%$%+%5%)5r@#P,B353*/%".bytes{|i|s==(j+=i-34).to_s(36).upcase&&r="I am not"[0,i==41?8:4]+r[7,12]}
r}

एक रन लंबाई एन्कोडिंग का उपयोग करता है, इसलिए मैजिक स्ट्रिंग 50 बाइट्स लंबा है, प्रति राज्य एक है। इसे बनाने के लिए, राज्य कोड को राज्य के नाम के बजाय राज्य कोड के वर्णानुक्रम में रखना आवश्यक था। दुर्भाग्य से 7 बाइट्स को jलोअरकेस स्टेटकोड से बेस 36 प्रतिनिधित्व को अपरकेस स्टेटकोड में बदलने की आवश्यकता होती है ।

परीक्षण कार्यक्रम में अपराजित

f=->s{                                                  #s is the input string.
  r="What is an engineer?"                              #Set r to "What is an engineer?"
  j=379                                                 #Set j to one less than 380, which in base36 becomes AK, the first statecode alphabetically
  "##(*Q0'7q;N>%*$o(.F%#&'#&#5##%$%+%5%)5r@#P,B353*/%". #Iterate through the run length encoded string 
  bytes{|i|                                             #(each character represents how far in base 36 each state code is from the previous one)
    s==(j+=i-34).to_s(36).upcase&&                      #take the ascii value of the character and subtract 34 (example #=35-34=1) and add to j. Convert j to base36 to get a state code.
      r="I am not"[0,i==41?8:4]+r[7,12]                 #if the state code matches s, modify r. Take the first 4 characters of "I am not" (first 8 in the case of OR where i==41) 
  }                                                     #and add r[7,12]==" an engineer" (12 characters of the existing value of r, starting at character 7 
r}                                                      #return r

%w{AL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NE NV NH NJ NM NY NC ND OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY XX}.map{|i|p [i,f[i]]}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.