माइनस और टिल्ड की अभिव्यक्ति का मूल्यांकन करें


16

रेगेक्स से मेल खाते हुए एक अभिव्यक्ति को देखते हुए /^[-~]*x$/, इसका मूल्यांकन करें xऔर रेगेक्स से मेल खाते एक स्ट्रिंग का उत्पादन करें /^-?x[+-]\d+$/

उदाहरण के लिए, स्ट्रिंग का -~xमूल्यांकन करता है x+1, जबकि स्ट्रिंग का -~-xमूल्यांकन करता है -x+1, और स्ट्रिंग का -~-~--xमूल्यांकन करता है x+2

हम xस्ट्रिंग को दाएं से बाएं से शुरू करते हैं और मूल्यांकन करते हैं। -को ~परिवर्तित करता है , जबकि शब्द को नकारता yहै -y-1

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

    x  x+0
   ~x -x-1
  -~x  x+1
 ~-~x -x-2
-~-~x  x+2
--~~x  x+0
  ~-x  x-1
 -~-x -x+1

यह । बाइट्स जीत में सबसे छोटा जवाब।

इनपुट / आउटपुट प्रारूप सख्त है। "x"अनिवार्य है।


हम उत्पादन कर सकते हैं x+010बजाय x+10के लिए -~-~-~-~-~-~-~-~-~-~x? यह दूसरे रेगेक्स से मेल खाता है।

आप कर सकते हैं, हालांकि मुझे कोई कारण नहीं दिखता है।
लीकेय नन

3
अलग-अलग भाषाओं में टिल्ड का अलग अर्थ होता है। आपको शायद यह स्पष्ट करना चाहिए कि आप पायथन का अर्थ है
लुइस मेंडो

3
@LuisMendo ने मेरे तीसरे पैराग्राफ का आखिरी वाक्य पढ़ा
लीक नून

1
@LeakyNun आह, क्षमा करें, मैंने वह नहीं देखा। वैसे भी, मुझे लगता है कि यह पहले दिखाई देना चाहिए। पहले दो पैराग्राफ और तीसरे भाग के बारे में बात करते ~हुए इसे परिभाषित नहीं किया गया है
लुइस मेंडो

जवाबों:



7

रेटिना , 47 44 बाइट्स

+`--|~~

((~)|-)*x
$&+$#2
T`+`-`^~.*
~
-
--

इसे ऑनलाइन आज़माएं! संपादित करें: @MartinEnder के लिए 3 बाइट्स सहेजे गए। Expanation:

+`--|~~

आसन्न डुप्लिकेट के जोड़े हटाएं।

((~)|-)*x
$&+$#2

~एस की संख्या की गणना करें जो हमें शब्द की परिमाण देता है।

T`+`-`^~.*

यदि पहला वर्ण है ~तो शब्द नकारात्मक होना चाहिए।

~
-
--

यदि ~s और -s की संख्या विषम है तो xऋणात्मक होना चाहिए।


6

जावास्क्रिप्ट, 59 बाइट्स

x=>['-'[x.length&1]]+'x'+['+'[(x=eval(x.join` `))<0^0]]+~~x

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


2
मुझे 16 सेकंड और 38 बाइट से हराया। बहुत बढ़िया।
ल्यूक

-एक पंक्ति में कई युक्त परीक्षण मामलों के लिए विफल । (यानी --~-~x)
ल्यूक

@Luke। मुझे यकीन नहीं है कि आपका क्या मतलब है मेरी स्क्रिप्ट इन परीक्षण मामलों के लिए भी काम करती है।

यह मेरे नए टेस्टकेस से बचता है: D
लीक नॉन

@ ThePirateBay: उफ़, nvm तो ...
ल्यूक



0

जावा 8, 186 बाइट्स

s->{s=s.replaceAll("--|~~","");int l,i=(s.length()-(l=(s=s.replaceAll("-~","")).length()))/2,j=l-(s=s.replaceAll("~","")).length();return(j>0?"-"+s+"-"+-~i:s+"+"+i).replaceAll("--","");}

निश्चित रूप से सुधार के लिए जगह ..

स्पष्टीकरण:

इसे यहाँ आज़माएँ।

s->{                              // Method with String as both parameter and return-type
  s=s.replaceAll("--|~~","");     //  Remove all "--" and "~~"
  int l,                          //  Temp integer to reduce bytes
      i=(s.length()-(l=(s=s.replaceAll("-~","")).length()))/2,
                                 //  Remove all "-~" and save count in `i`
      j=l-(s=s.replaceAll("~","")).length();
                                 //  Remove all remaining "~" and save count in `j`
   return(j>0?                   //  If `j` is larger than 0:
           "-"                   //   Start with a minus sign
           +s                    //   followed by the remaining `s`
           +"-"                  //   followed by another minus sign
           +-~i                  //   followed by `i+1`
          :                      //  Else:
           s                     //   Start with the remaining `s`
           +"+"                  //   followed by a plus sign
           +i                    //   followed by `i`
         ).replaceAll("--","");  //  And then remove all "--"
}                                // End of method
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.