2012-06-07 17 views
5

के लिए खोज स्ट्रिंग मेरे पास एक जावास्क्रिप्ट चैट बॉट है जहां कोई व्यक्ति किसी इनपुट बॉक्स में टाइप कर सकता है और उसे सटीक उत्तर प्राप्त करने की उम्मीद है। मैं यह कर सकता हूं लेकिन मुझे पता है कि मैं इस सब गलत के बारे में जा रहा हूं क्योंकि मुझे नहीं पता कि वाक्य में संख्या किस स्थिति में दिखाई देगी। यदि कोई व्यक्ति बिल्कुल टाइप करता है:संख्या

5 की वर्ग रूट क्या है यह ठीक काम करता है।

यदि वह इस तरह की चीजों में टाइप करता है तो यह नहीं करता है।

का वर्गमूल 5 का वर्गमूल है क्या है क्या

आप जानते हैं कि 5 का वर्गमूल

आदि

मैं होने की जरूरत है यह निर्धारित करने में सक्षम है कि वाक्य में संख्या कहां दिखाई देती है, फिर वहां से गणना करें। ध्यान दें कि नीचे दी गई रेखा एक बड़े कामकाजी चैटबॉट का हिस्सा है। नीचे दी गई रेखा में मैं किसी भी वर्ग रूट प्रश्न का उत्तर देने में सक्षम होने की कोशिश कर रहा हूं, भले ही वाक्य में संख्या कहां दिखाई दे। मुझे यह भी पता है कि ओपन एंड इनपुट बॉक्स के साथ कई नुकसान हैं जहां एक व्यक्ति वर्तनी त्रुटियों आदि जैसे कुछ भी टाइप कर सकता है। यह सिर्फ मनोरंजन के लिए एक गंभीर वैज्ञानिक परियोजना नहीं है। :)

if(
    (word[0]=="what's") && 
    (word[1]=="the") && 
    (word[2]=="square") && 
    (word[3]=="root") && 
    (word [4]=="of") && 
    (input.search(/\d{1,10}/)!=-1) && 
    (num_of_words==6) 
){   
    var root= word[5]; 
    if(root<0){ 
     document.result.result.value = "The square root of a negative number is not possible."; 
    }else{ 
     word[5] = Math.sqrt(root); 
     word[5] = Math.round(word[5]*100)/100 
     document.result.result.value = "The square root of "+ root +" is "+ word[5] +"."; 
    } 
    return true; 
} 

बस स्पष्ट होने के लिए बॉट को किसी कारण के लिए "अगर राज्य" का उपयोग करके लिखा गया है। यदि इस मामले में इनपुट में "क्या" और "वर्ग रूट" और "कुछ संख्या" शब्द शामिल नहीं हैं, तो रेखा ट्रिगर नहीं होती है और बॉट द्वारा सामान्य के साथ उत्तर दिया जाता है "मुझे नहीं पता प्रतिक्रिया "। तो मुझे उम्मीद है कि कोई भी जवाब उस प्रारूप में फिट होगा जो मैं उपयोग कर रहा हूं। दयालु रहो, मैं यहाँ नया हूँ। मुझे बॉट बनाना पसंद है लेकिन मैं प्रोग्रामर का ज्यादा नहीं हूं। धन्यवाद।

+0

वाह। आप निश्चित रूप से अपने मनोरंजन को उच्च स्तर पर ले जाएं। :) –

उत्तर

2

आप नियमित अभिव्यक्ति का उपयोग करके ऐसा कर सकते हैं।

"What is the sqrt of 5?".match(/\d+/g); 
["5"] 

आउटपुट एक सरणी है जिसमें स्ट्रिंग में पाए गए सभी नंबर होते हैं। यदि आपके पास एक से अधिक हैं, जैसे "100 10 का वर्ग रूट है?" तो यह

"Is the square root of 100 10?".match(/\d+/g); 
["100", "10"] 

ताकि आप अपनी स्क्रिप्ट में किस नंबर का उपयोग करना चाहें चुन सकें।

+0

'" जीवन का अर्थ 42 है? "' -> '6.48' –

+0

वह कोड केवल आपको नंबर देगा, जैसा कि मूल प्रश्न पूछा गया था। ऐसा लगता है कि 'मिस्टर मूवी' के पास पहले से पूछे गए प्रश्न के _kind_ को संभालने का एक तरीका है। – sachleen

+0

मुझे लगता है कि यह बिंदु स्पष्ट नहीं हो सकता है। "अगर वक्तव्य" सभी अनावश्यक सूचनाओं को दिखाता है। अगर जानकारी मौजूद नहीं है तो अगर कथन कभी ट्रिगर नहीं होता है। तो मुझे पता है कि अगर कथन में एक संख्या होगी। मैं var root की तरह कुछ उम्मीद कर रहा था = जो भी संख्या है। फिर उस संख्या पर एक साधारण गणना से perfom जैसे sum = Math.sqrt (रूट); मूल पोस्ट को देखते हुए मुझे शब्द पता है [5] संख्या है। हालांकि अगर वाक्यांश अलग-अलग शब्द [3] शब्द [4] इत्यादि। इनपुट खोजने के लिए कोई तरीका है। पता लगाएं कि संख्या कहां गिरती है और कैलकुलेटर तदनुसार। –

1

आपको नियमित अभिव्यक्तियों का उपयोग करने की आवश्यकता होगी, अगर आपको नहीं पता कि वे उन्हें क्या देखना चाहते हैं क्योंकि उन्हें इस प्रतिक्रिया में उन्हें समझाने में बहुत लंबा समय लगेगा। जावास्क्रिप्ट https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions में नियमित अभिव्यक्तियों के लिए यहां एक उपयोगी वेबसाइट है।

मान लें कि आप नियमित अभिव्यक्तियों को जानते हैं, आपको पहले संख्याओं की खोज करनी चाहिए और आपको मिलने वाली सभी संख्याओं को स्टोर करना चाहिए, यदि कोई संख्या कोई त्रुटि संदेश मुद्रित नहीं होती है। एक अतिरिक्त नोट के रूप में, आप गणितीय स्थिरांक जैसे पीआई या ई के लिए खोज करने पर विचार कर सकते हैं। यह काम करना चाहिए

nums = someString./\d+|pi|e/gi 

अगले भाग लेकिन यह करने के लिए उबालने के लिए नीचे कठिन होने जा रहा है मूल अवधारणा है, तो आप इस तरह के 'वर्गमूल', 'बार', या 'प्लस' के रूप में प्रमुख शब्दों के लिए देखने की जरूरत है । आपको यह शब्द बाएं से दाएं शब्द से करना चाहिए।उदाहरण के लिए यदि कोई उपयोगकर्ता आदानों

What is 5 plus 3 minus 8? 

आप जबकि अगर यह इनपुट किया जाता है

What is 5 minus 3 plus 8? 

आप प्लस से पहले शून्य से पता लगा लेगा, शून्य से पहले से अधिक का पता लगाने चाहिए।

दो नंबरों का उपयोग करने वाले संचालन के लिए आपको पहले दो नंबरों को लेने और ऑपरेशन करने और परिणाम के साथ दो संख्याओं को प्रतिस्थापित करने की आवश्यकता है। मैं रिवर्स पॉलिश नोटेशन का उपयोग करने की कोशिश कर रहा हूं यदि आप समझ में नहीं आ रहे हैं कि मैं क्या करने की कोशिश कर रहा हूं, तो इसे देखें, अगर यह नहीं पता कि यह क्या है।

मुझे उम्मीद है कि मैं आपके प्रश्न को सही ढंग से समझ गया हूं और समाधान में आने में कुछ मदद प्रदान की है क्योंकि आपने जो पूछा है वह बहुत कठिन है लेकिन मजेदार लगता है। सौभाग्य। एक चेतावनी के रूप में मैं अपनी प्रतिक्रिया में संचालन के आदेश पर विचार नहीं कर रहा हूं।

+0

[कृपया w3schools से परहेज करने पर विचार करें।] (Http://w3fools.com) – Pointy

+0

@ प्वाइंट धन्यवाद, मुझे एहसास नहीं हुआ कि w3schools हानिकारक हो सकता है, इसे w3fools द्वारा सुझाए गए एमडीएन साइट में बदल दिया गया है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^