चार चौके पहेली


21

चार चौके पहेली एक लोकप्रिय मनोरंजन गणितीय पहेली है कि ठीक चार 4s (और कोई अन्य नंबर) और आपरेशन के एक परिभाषित सेट का इस्तेमाल किया जाता एक दिया अधिकतम करने के लिए 0 से हर संख्या तक पहुँचने के लिए है।

इस संस्करण में, केवल निम्नलिखित ऑपरेटरों को अनुमति दी जाती है:

  • किसी भी समूह के प्रतीकों का उपयोग किया जा सकता है
  • जोड़ ( +), घटाव ( -), गुणा ( *), मंडल ( /)
  • फैक्टरियल ( !), गामा फंक्शन ( Γ)
  • प्रतिपादक ( ^), वर्गमूल ( )
  • संबंध (उदाहरण के 44लिए दो 4एस)
  • दशमलव बिंदु (जैसे 4.4दो है 4), ओवरबार (जैसे। .4~ = 4/9)

संचालन का मानक क्रम लागू होता है।

आपके प्रोग्राम को उत्पन्न करना चाहिए, 0 और 100 समावेशी के बीच एक इनपुट, उस इनपुट के लिए एक सही समाधान। यदि प्रोग्राम किसी इनपुट के लिए अमान्य समाधान का आउटपुट देता है, तो वह प्रोग्राम अमान्य है।

उदाहरण के लिए, इनपुट के साथ 0, आपका प्रोग्राम उत्पन्न हो सकता है 44-44

बाहरी मॉड्यूल के उपयोग की अनुमति नहीं है। केवल _.4~ओवरबार ऑपरेटर के लिए अनुमति है - अर्थात्, केवल एक 4दशमलव बिंदु के पीछे हो सकता है।

यह कोड गोल्फ है, इसलिए सबसे छोटा समाधान जीतता है।


संपादित करें : अतिरिक्त स्पष्ट होने के लिए, प्रोग्राम को उपरोक्त ऑपरेशन के एक सेट को बिल्कुल चार 4s पर लागू करना चाहिए - और नहीं, कम नहीं। इसके अलावा, .4 = 4/10एक वैध शब्द है, और केवल एक का उपयोग करने के रूप में गिना जाता है 4


कोई गोल संचालन नहीं? :-(
जॉन डेवोरक

@JDDvorak गलत, नहीं, कि अनुमति नहीं दी जाएगी।
अस्थिरता

गामा और तथ्यात्मक दोनों की अनुमति है?
जॉन ड्वोरक

@JanDvorak कभी भी सूचीबद्ध होने वाली (लेकिन केवल वे चीजें जो सूचीबद्ध हैं) का उपयोग किया जा सकता है।
अस्थिरता

क्या हम एक उपसर्ग फ़ंक्शन ( !(4)बजाय (4)!) के रूप में फैक्टरियल को आउटपुट करने की अनुमति देते हैं ?
जॉन ड्वोरक

जवाबों:


6

गोल्फस्क्रिप्ट (129 चार्ट *)

[4.`2'√4'24'4!'6'Γ4'1'Γ√4'120'ΓΓ4']2/:F{.F=[[44.`]]*\{`{+{'+*-'1/{:^;.[~@[\]{'()'1/*}%^*@@^~\]\}/}:|~2/~\+|;}+F/}%+}3*\{\0==}+?1=

मेरे पीसी पर 4 मिनट के आदेश पर चल रहा है। के .&बाद तुरंत विशिष्टता संचालन जोड़कर दो पात्रों की लागत पर एक मध्यम गति प्राप्त की जा सकती है %+

मैं के लिए पहले से कूटबद्ध एक्सप्रेशन का उपयोग कर 1, 2, 4, 6, 24, 120, और 44, और का उपयोग कर केवल उन्हीं से आराम का निर्माण +, *, और -। इस तरह मुझे कार्यक्रम में किसी भी गैर-पूर्णांक अंकगणित को करने की आवश्यकता नहीं है। मैंने शुरुआत में सरल पूर्व-कोडित मूल्यों को रखकर सरल अभिव्यक्ति प्राप्त करने की कोशिश की है।

उन मूल्यों के सभी आवश्यक हैं , और यह घटाव के दोनों दिशाओं (समर्थन करने के लिए आवश्यक है complex_expression - simple_expressionऔर इसके विपरीत)। कुछ ऑपरेशनों को शामिल करना भी आवश्यक है जिसमें कोष्ठक (विशेष रूप से a*(b-c)) की आवश्यकता होती है , इसलिए मैं सभी सबटेक्शंस को अंधाधुंध रूप से ब्रैकेट करता हूं।

* मैं यूनिकोड कोड पॉइंट्स को यूटीएफ -8 को एन्कोडेड मान रहा हूं, और कालीन के नीचे ब्रश कर रहा हूं, जब तक कि आप रूबी के हालिया संस्करण का उपयोग नहीं कर रहे हैं जब तक कि इंटरप्रेटर को चलाने के लिए यह वास्तव में एएससीआईआई पात्रों के रूप में व्यवहार कर रहा है। यदि आप इस बारे में बहुत चिंतित हैं, तो Gगामा और vsqrt के लिए उपयोग करें ।

ठीक है, सख्ती से मैं निकाल सकते 44के बदले में 11के रूप में 44/4और 71के रूप में √(Γ√4+(ΓΓ4+Γ√4)!)है, लेकिन यह एक अच्छा व्यापार बंद नहीं है।


7

पायथन 155 बाइट्स

h={4:'4',24:'4!',6:'â4',.4:'.4',1:'âû4',4/9.:'.4~'}
f={}
def g(r,s='24',y='4!'):f[eval(s)]=y;[g(r-1,s+o+`k`,y+o+h[k])for k in h for o in'/*-+'if r]
g(3)

पहले तीन बाइट्स ( \xEF\xBB\xBF) UTF-8 बाइट ऑर्डर मार्क हैं, हालांकि फाइल को ANSI फॉर्मेट में सेव किया जाना चाहिए। ûऔर âके रूप में interpretted किया जाएगा और Γमें क्रमश: cp437 और cp850 , जो सिर्फ किसी भी Windows बॉक्स के बारे में पर काम करना चाहिए।

मेरे कंप्यूटर पर रनटाइम लगभग 0.4s है।

नमूना उपयोग (फ़ाइल का नाम four_fours.py):

$ python
>>> from four_fours import f
>>> f[39]
'4!+4!/.4/4'
>>> f[87]
'4!*4-4/.4~'
>>> for i in range(101): print i, f[i]
0 4!+4!-4!-4!
1 4!+4!/4!-4!
2 4!-4!+Γ4-4
3 4!-4!+4-Γ√4
4 4!+4!/Γ4-4!
.
.
.
96 4!+4!+4!+4!
97 4!*4!/Γ4+Γ√4
98 4!*4+Γ4-4
99 4!*4+4-Γ√4
100 4!*4!/Γ4+4

0..100 के लिए परिणाम । जिस तरह से हैश के चलने के कारण, वह अधिक से अधिक बार उपयोग करना पसंद 4!करता है।

संपादित करें: कई बाइट्स को जोड़कर सहेजा गया है Γ√4 = 1, जो किसी भी समूह की आवश्यकता को समाप्त करता है, और हटाकर √4 = 2, जो अब आवश्यक नहीं था।


4

जे, 175 161 चर

   f=.')',~'(',;@((<;._2'+ - * % .4 .4~ g(r(4)) r(4) 4 g(4) 4! ( ) '){~(143402 A.i.9)
      /:~(12,11,0,6$0 4 4)+(9$4 7 7)#:((,@(+/,-/,*/,%/)~)^:2,0.4 4r9 1 2 4 6 24)&i.)

   f 1
(.4+.4)+(.4%r(4))

   f 42
(r(4)+4)+(g(4)*g(4))

   f 100
(r(4)+r(4))+(4*4!)

चेक किया गया प्रारूप (v op v) op (v op v)कहां v={0.4 4/9 1 2 4 6 24}और कहां हैop={+ - * /}

पूर्ण 0..100 परिणाम


मुझे नहीं लगता कि .4इस खेल के लिए एक वैध संख्या है।
जॉन ड्वोरक

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