मेरे कंप्यूटर की मरम्मत में मेरी मदद करें!


23

यह चुनौती आपके लिए वास्तविक (और दुखद) प्रेरणा से लाई गई है। हाल ही में, मेरे कीबोर्ड पर संख्या पंक्ति थोड़ी छिटपुट हुई है। चाबियाँ 1-9कभी-कभी काम करती हैं - लेकिन अन्य बार उनके पास कोई परिणाम नहीं होता है। एक शौकीन चावला प्रोग्रामर के रूप में, यह भयानक है! (देखें कि विस्मयादिबोधक बिंदु; यह है कि आप जानते हैं कि वे अभी काम कर रहे हैं।) न केवल मुझे अक्सर संख्याओं की आवश्यकता होती है, बल्कि प्रतीक!@#$%^&*(आधा समय पूरी तरह से अप्रभावी हैं! सी प्रोग्रामर के रूप में, अपने लैपटॉप को ठीक करने के लिए कोड के साथ डूडलिंग के अपने व्यस्त कार्यक्रम के लिए समय निकालने के बजाय, मुझे समस्या के आसपास काम करने में अधिक रुचि है। पिछले कुछ हफ्तों के दौरान, धीरे-धीरे, मेरे कोड के सभी नंबर शाब्दिक को हेक्साडेसिमल से बदल दिया गया है ताकि मुझे कॉपी और पेस्ट करने के लिए संख्याओं के लिए शिकार करने की जरूरत न पड़े। हालाँकि, कुछ संख्याएँ बिना कुंजियों के टाइप करना आसान नहीं है 1-9। उदाहरण के लिए, संख्या 1केवल हेक्साडेसिमल में नहीं लिखी जा सकती है, और मैंने 1अपने कोड में एस को बदलने का सहारा लिया है 0xF - 0xE। केवल कुंजी है कि प्रभावित होते हैं 1-9, तो मैं जैसे प्रतीकों का पूरा उपयोग को बनाए रखने +, -और /। हालाँकि, मैं गुणा या कोष्ठक का उपयोग नहीं कर सकता, जैसा कि*और (अक्सर टूट जाते हैं। यह आपकी चुनौती की ओर जाता है।

इनपुट

nस्टेंडर या आपकी भाषा के समकक्ष एक पूर्णांक । यदि आप चाहें, तो पूर्णांक से पहले या उसके बाद एक नई पंक्ति या अन्य व्हाट्सएप चरित्र हो सकता है। वैकल्पिक रूप से, आप कमांड लाइन तर्क के माध्यम से इनपुट प्राप्त कर सकते हैं।

आपके कार्यक्रम को नकारात्मक इनपुट का सही जवाब देना चाहिए, और कम से कम 32-बिट हस्ताक्षरित पूर्णांक को संभालने में सक्षम होना चाहिए।

उत्पादन

आपके कार्यक्रम को आउटपुट करना चाहिए, कुछ अवलोकन योग्य रूप में, सबसे छोटा (गैर-व्हाट्सएप वर्णों में) संख्या nको योग, एक या अधिक हेक्साडेसिमल मानों के योग के रूप में लिखना संभव है । इस समस्या को हल करने के लिए एक से अधिक तरीके हैं, और इस बात की कोई आवश्यकता नहीं है कि आप किसी भी अन्य पर समान लंबाई के आउटपुट का पक्ष लें।

आउटपुट उस रूप में होना चाहिए A % A % A...जहां केवल अंकों वाले Aनिम्नलिखित हेक्साडेसिमल मान है , और प्रतीकों में से एक है0xA-F a-f%-+/ । आज्ञा देना /पूर्णांक प्रभाग, नहीं फ्लोटिंग प्वाइंट का वर्णन।

(ध्यान दें कि आपके आउटपुट में परिणाम होना चाहिए n पहले विभाजन का मूल्यांकन करते समय, बाएं से दाएं, और फिर परिवर्धन और घटाव, बाएं से दाएं के रूप में होता है, जैसा कि सम्मेलन है।)

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

इनपुट आउटपुट

  1. 1

    0xF - 0xE(या 0xF-0xEया 0xB-0xAया 0xd - 0xcया 0xF/0xF)

  2. 15

    0xF

  3. 255

    0xFF

  4. 30

    0xF + 0xF

स्कोरिंग और नियम

यह कोड-गोल्फ है। आपका प्रारंभिक स्कोर आपकी स्रोत फ़ाइल में बाइट्स की संख्या है।

आप किसी भी अंक का उपयोग नहीं कर सकते हैं 1-9 अपने स्रोत में ।

आप प्रतीकों का उपयोग कर सकते हैं !@#$%^&*( अपने स्रोत में का करते हैं, लेकिन प्रत्येक आपके स्कोर के लिए +20 के दंड पर आता है।

आपके प्रोग्राम को एक फ़ंक्शन द्वारा प्रतिस्थापित किया जा सकता है n एक तर्क के रूप में है जब तक कि फ़ंक्शन मानव-पठनीय आउटपुट के कुछ रूप का उत्पादन करता है। आपके फ़ंक्शन का रिटर्न मान आउटपुट के रूप में नहीं गिना जाता है।

मानक खामियों की अनुमति नहीं है।

सबसे कम स्कोर जीत! सौभाग्य!

क्या मैंने कुछ स्वरूपण / पूछताछ / स्पष्टता-समझदारी की बात की है? मुझे बताएं! यह इस साइट पर मेरा पहला सबमिशन है!


क्या पूर्णांक के आकार की ऊपरी सीमा है? इसके अलावा, ऋणात्मक संख्याओं को कुछ मनमानी परिशुद्धता (यानी 32 बिट) का प्रतिनिधित्व किया जाएगा?
FryAmTheEggman

@FryAmTheEggman ने स्पष्ट करने के लिए मूल पोस्ट का संपादन किया। इनपुट नकारात्मक हो सकता है, और आपके प्रोग्राम को कम से कम 32 बिट इनपुट पर सही ढंग से प्रतिक्रिया देनी चाहिए। धन्यवाद!
ब्रेनसैट


यह मेरे लिए बहुत ठोस कल्पना की तरह दिखता है, लेकिन अगर आप कुछ प्रतिक्रिया चाहते हैं, तो मैं इसे सैंडबॉक्स में पोस्ट करने की सलाह दूंगा (भविष्य की चुनौतियों के लिए) ताकि आप इसे मुख्य पर पोस्ट करने से पहले प्रतिक्रिया प्राप्त कर सकें और लोग इस पर काम करना शुरू कर दें ।
मार्टिन एंडर

1
पूर्णांक या फ्लोटिंग पॉइंट डिवीजन?
edc65

जवाबों:


5

जावास्क्रिप्ट 287 (187 + 20 * 5) 295 (195 + 20 * 5) 338 (198 + 20 * 7)

एक फ़ंक्शन जो 6 के हर संभव संयोजनों की जांच करता है, हेक्स अंकों (0xA से 0xF) और 3 अनुमत ऑपरेटरों की अनुमति देता है। पॉपअप के माध्यम से आउटपुट और अनुरोध के अनुसार मान वापस नहीं।

मैंने कॉमा से अलग अभिव्यक्ति के लिए [] का उपयोग किया, लेकिन लूप और फ़ंक्शन कॉलिंग के लिए 5 7 खुले कोष्ठक से बच नहीं सका ।
अंकों से बचने के लिए 1,2,3 के लिए चर ए, बी, सी हैं (यह कोड को और भी अस्पष्ट बनाता है)

संपादित कोड को टालने पर ध्यान केंद्रित करते हुए संशोधित किया गया है '(' हटाए गए ifऔर स्पष्ट RegExp निर्माण

खबरदार: यह फ़ंक्शन अविश्वसनीय रूप से धीमा है, यह 90 जैसे छोटे इनपुट के लिए, फायरफॉक्स में एक स्क्रिप्ट के लिए समय सीमा को पार कर जाएगा।

सभी संभव अभिव्यक्ति की गणना करने के लिए, मैं 3 पर शुरू होने वाली संख्या का उपयोग करता हूं और हमेशा के लिए ऊपर जा रहा हूं। अंक एन्कोडिंग:
0,1,2 ऑपरेटर हैं -, -, /
4 से 9 हेक्स अंक हैं। ए। एफ
3 की अनुमति नहीं है
प्रत्येक नंबर को regexp के साथ जांचा जाता है/3|[0-2]{2}/ 3 से बचने के लिए और 2 लगातार ऑपरेटर होते हैं ( चेक ट्रायल और प्रमुख ऑपरेटरों से भी बचें - कोड देखें)

परिणामस्वरूप स्ट्रिंग कुछ ऐसा है 0xA + 0xA - 0xDजो वैध जावास्क्रिप्ट है, इसलिए मैं इसका मूल्यांकन करने के लिए eval का उपयोग करता हूं। Unfortunatley '/' ऑपरेटर फ़्लोटिंग पॉइंट है और जावास्क्रिप्ट में पूर्णांक नहीं है, इसलिए मैं 100% सुनिश्चित नहीं हूं कि परिणाम अंतिम परिणाम के लिए पूर्णांक के लिए सही ईवेंट कास्टिंग हैं (लेकिन मुझे पूरा विश्वास है, यह देखते हुए कि एक छोटी सी गोल त्रुटि नहीं हो सकती है एक '*' द्वारा प्रवर्धित किया जाए

F=x=>{
  for(A=-~0,B=A+A,i=C=A+B,j=0;j?x-~~eval(L):A;)
  {
    j=++i+'0',k=0+j;
    for(c of~k.search(C+'|[0-'+B+']{'+B+'}',L='',w='0x')?j='':j)
      c>C?w+=' ABCDEF'[c-C]:[L+=w,w=' '+'+-/'[c]+' 0x']
  }
  alert(L)
}

कुछ और

अब, कुछ मजेदार। मैं eval कॉल से बचने के लिए एक oversimplified expressione parser का उपयोग किया और, बहुत ही तेजी से निकला।

पार्सर वास्तव में सरलीकृत है, एक असली पार्सर में वी और ओ को लंबित मान स्टैक और लंबित ऑपरेटरों स्टैक वाले एरेज़ होने चाहिए। यहाँ V एकल लंबित मान है (और वापसी मान भी) और O अधिकांश 2 वर्णों वाला एक स्ट्रिंग है। P में '- + /' => '112' के लिए ऑपरेटर की पूर्ववर्ती तालिका है।

यह स्कोर 275 + 4 * 20 => 355 है

F=x=>{
  for(A=-~0,B=A+A,i=C=A+B,D=A+C,j=0,P=''+A+A+B;j?x-V:A;)
  {
    j=++i+'0',k=0+j;
    for(c of~k.search(C+'|[0-'+B+']{'+B+'}',v=V=O=L='',w='0x')?j='':j)
      c>C?
        w+='ABCDEF'[v<<=D,v+=D+A-~c,c-D]
      :[
          P[O[0]]>=P[c]?[v=O>A?V/v|0:O>0?V+v:V-v,O=c]:O=c+O,
          L+=w,w=' '+'-+/'[c]+' 0x',V=v,v=0
      ]
  }
  alert(L)
}

फ़ायरफ़ॉक्स / फायरबग कंसोल में टेस्ट , रिटर्न के साथ अलर्ट बदलें (बहुत अधिक उपयोगी)

;[0, 1, 15, 255, 30].forEach(x=>console.log(x,F(x)))

0 0xA - 0xA
1 0xA / 0xA
15 0xF
255 0xFF
30 0xF + ​​0xF

बस थोड़ा कम स्पष्ट (लेकिन धैर्य रखें)

;[16,40, 51, 62, 73, 84, 95].forEach(x=>console.log(x,F(x)))

16 0xBA / 0xB
40 0xA + 0xF + ​​0xF
51 0xDD - 0xAA
62 0xEA - 0xAC
73 0xA + 0xEA - 0xAB
84 0xFE -
0xAA 95 0xA + 0xFF - 0xAA


3

पायथन 2: 185 बाइट + 2 * 20 = 225

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

from itertools import product as p
n=input()
l=t=0
while~l:
 l=-~l
 for i in p("0xABCDEF+-/",repeat=l):
  j=""
  for k in i:j+=k
  try:exec"t="+j
  except:0
  if t==n:print j;l=~0;break

productअनुमत वर्णों की सभी अलग-अलग व्यवस्था करता है। execइसे डिकोड करने की कोशिश करता है। यह दुख की बात है कि एक अपवाद लौटाता है, लंबे try - catchब्लॉक को निकालता है। यह परिणाम ठीक है, यह प्रिंट और मौजूद है।

फ़ंक्शन कॉल के दौरान उन ब्रेसिज़ के कारण 2 गुना जुर्माना।


2
इस उत्तर में कुछ मुद्दे हो सकते हैं: (1) 0हेक्साडेसिमल शाब्दिक नहीं है; (2) पायथन में एक ऋणात्मक संख्या को शामिल करने वाला विभाजन C. की तुलना में एक अलग परिणाम देता है
feersum
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.