अंकगणित… tock… टिक… tock


15

यह प्रश्न आपके लिए एक गेम द्वारा लाया गया था जब मैं फोन की लंबी बैठकों में फंसना पसंद करता था।

24 घंटे की घड़ी से किसी भी दो बार (00:00 से 23:59 तक) को देखते हुए, केवल बुनियादी अंकगणितीय संचालन का उपयोग करने के बीच में सभी समय के साथ कितने वैध गणितीय समीकरण उत्पन्न किए जा सकते हैं?

इनपुट: 24 घंटे के चक्र में वैध समय का प्रतिनिधित्व करते हुए दो चार अंकों के तार (कोई बृहदान्त्र)।

उदाहरण:

इनपुट के लिए = 0000, 1300

03:26 produces: "0+3*2=6" and "03*2=6" etc.
11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and  "1=11^0" etc.
12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc.

मान्य संचालन हैं:

  • इसके अलावा
  • घटाव
  • गुणन
  • विभाजन (अस्थायी बिंदु)
  • घातांक
  • कारख़ाने का

अन्य स्वीकार्य प्रतीक

  • कोष्टक
  • समान संकेत

सबसे छोटा कोड जीतता है।

टिप्पणियाँ

  • लक्ष्य दो बार के बीच वैध अभिव्यक्तियों की संख्या का पता लगाना है , न कि उस समय की संख्या जिसमें एक वैध अभिव्यक्ति होती है।
  • इनपुट के रूप में दिए गए दो बार समय सीमा में शामिल हैं।
  • आप किसी भी तरह से अंकों को समूह में रख सकते हैं, इसलिए "1223" "12 23" या "1 2 23" या "1 223" आदि हो सकते हैं।
  • आप आवश्यकतानुसार कई कोष्ठकों का उपयोग कर सकते हैं।
  • आप एक से अधिक =संकेतों का उपयोग कर सकते हैं । उदाहरण के लिए, समय 11:11की वैध अभिव्यक्ति है 1=1=1=1
  • यदि पहली बार क्रोनोलॉजिकल रूप से दूसरी बार होता है, तो समय की सीमा को अगले दिन में पार करते हुए लपेटना चाहिए।
  • अंक अपने मूल क्रम में ही रहने चाहिए- आप अंकों को फिर से आदेश नहीं दे सकते।
  • जब क्लस्टरिंग संख्या, शून्य हो सकता है तो सबसे सामने सबसे अधिक अंक हो सकता है, उस स्थिति में, उन्हें अनदेखा किया जाता है ("0 03" को "03 03" के रूप में क्लस्टर किया जाता है। 3. के मान के साथ सिर्फ दो अंक हैं)
  • आप माइनस साइन को एकरी निगेटिव के रूप में उपयोग नहीं कर सकते। इसलिए, "12:01" "1-2 = - (01)" का उत्पादन नहीं करता है, लेकिन "1-2 = 0-1" का उत्पादन नहीं करता है।
  • आप दशमलव अंकों को अंकों में नहीं जोड़ सकते। इसलिए, "12:05" "1/2 = 0.5" का उत्पादन नहीं करता है।
  • भाज्य की कोई श्रृंखला नहीं- एक अंक का अनुसरण सबसे अधिक किया जा सकता है "!", और नहीं, अन्यथा, कई बार अनंत समाधान होते। Ex: "5!" मान्य है लेकिन "5 !!" मान्य नहीं है।


4
" वैध संचालन में शामिल हैं " आपको परीक्षण मामलों को जोड़ने में सक्षम होने से रोकता है। यह एक बेहतर सवाल होगा यदि आपने इसे बदल दिया कि " वैध संचालन हैं " और कुछ परीक्षण मामलों को जोड़ा। एंडपॉइंट्स के बारे में सटीक होना भी उपयोगी होगा: इनपुट के लिए 0000 1300समीकरणों को व्युत्पन्न किया जाना चाहिए 0000और 1300गणना में शामिल किया जाना चाहिए ?
पीटर टेलर

1
दिए गए अंकों "1423", "1 + 4 = 2 + 3", "(1 + 4) = (2 + 3)", "(1 + 4) = 2 + 3" और "1 + 4 = (2) करें" +3) "एक या चार समीकरणों के रूप में गिनें?" और ... "0000" के सभी समीकरण क्या हैं ? मैं लगभग 100 संभावनाओं के बारे में सोचता हूं, या इससे भी अधिक ... क्या यह हो सकता है?
22

2
क्या एकतरफा ऑपरेटरों के उपयोग पर कोई प्रतिबंध है? नियमों में इस तरह के प्रतिबंध के अभाव में, गुटबंदी को बार-बार लागू किया जा सकता है और इस तरह एक सही समाधान असंभव साबित हो सकता है।
माइकल स्टर्न

1
माइकल, यह एक महान अवलोकन है। तो पहेली के लिए, मुझे लगता है कि मैं इसे "अंक" प्रति एक भाज्य तक सीमित कर दूंगा, अगर यह समझ में आता है। वहाँ, 5! मान्य है लेकिन 5 !! मान्य नहीं है।
nobillygreen

जवाबों:


1

पायथन 3, 363 वर्ण

चूँकि आज तक कोई जवाब नहीं दिया गया है, मुझे जो मिला है उसमें मैं हाथ बँटाता हूँ। अफसोस की बात है कि, ब्लॉक को छोड़कर, कोशिश / वसा बहुत मोटी है, मुझे वहां चार्ट को बचाने का कोई तरीका नहीं मिला। यह वास्तव में वहाँ नेस्टेड छोरों के साथ मुश्किल है, सभी को मेरी समझ से सूची की समझ के साथ नहीं किया जा सकता है, लेकिन शायद कोई मुझे बता सकता है कि कैसे।

हालाँकि, मैंने खुद को चुनौती दी कि मैं केवल बेसिक गणित '+ - * /' और कोई कोष्ठक का उपयोग न करूँ।

a,b = input().split()
r=0
for time in [c for c in range(int(a),int(b)) if c/10%10<6]:
 t,*ts='%04d'%time
 e=[t]
 for d in ts:
  e=[(n+o+d,n+d)[o==' '] for o in ' -+*/=' for n in e]
 for h in [g for g in [e.split('=') for e in e if '='in e] if len(g)>1]:
  for k in h:
   try:
    if eval(h[0]) != eval(k):
     break
   except:
    break
  else:
   r+=1
print(r)

इस CodeGolf पर मेरा पूरा कोड (आशा कुछ व्याख्यात्मक) मेरे पर पाया जा सकता pastebin

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