इसलिए, फ्रांसीसी के लिए क्रियाओं को संयुग्म करने के लिए एक कार्यक्रम लिखने के लिए मेरे प्रयासों में (एल्गोरिदमिक रूप से, एक डाटासेट के माध्यम से नहीं), मैं एक मामूली समस्या के साथ आया हूं।
क्रियाओं को संयुग्मित करने के लिए एल्गोरिथ्म वास्तव में क्रियाओं के 17 या तो मामलों के लिए काफी सरल है, और प्रत्येक मामले के लिए एक विशेष पैटर्न पर चलता है; इस प्रकार, इन 17 वर्गों के लिए संयुग्मन प्रत्यय स्थिर हैं और जल्द ही किसी भी समय परिवर्तन नहीं करेंगे। उदाहरण के लिए:
// Verbs #1 : (model: "chanter")
terminations = {
ind_imp: ["ais", "ais", "ait", "ions", "iez", "aient"],
ind_pre: ["e", "es", "e", "ons", "ez", "ent"],
ind_fut: ["erai", "eras", "era", "erons", "erez", "eront"],
participle: ["é", "ant"]
};
ये फ्रेंच में क्रिया के सबसे सामान्य वर्ग के लिए विभक्तिपूर्ण प्रत्यय हैं।
क्रिया (अनियमित) के अन्य वर्ग हैं, जिनके संयुग्मन भी अगली शताब्दी या दो के लिए स्थिर बने रहेंगे। चूंकि वे अनियमित हैं, उनके पूर्ण संयुग्मों को सांख्यिकीय रूप से शामिल किया जाना चाहिए, क्योंकि वे मज़बूती से एक पैटर्न से संयुग्मित नहीं हो सकते हैं (केवल मेरी गणना द्वारा [32 अनियमितताएं भी हैं)। उदाहरण के लिए:
// "être":
forms = {
ind_imp: ["étais", "étais", "était", "étions", "étiez", "étaient"],
ind_pre: ["suis", "es", "est", "sommes", "êtes", "sont"],
ind_fut: ["serai", "seras", "sera", "serons", "serez", "seront"],
participle: ["été", "étant"]
};
मैं यह सब XML या JSON में भी डाल सकता था और इसका उपयोग करने की आवश्यकता होने पर इसे निष्क्रिय कर सकता था, लेकिन क्या कोई बिंदु है? ये तार प्राकृतिक भाषा का हिस्सा हैं, जो बदलता है, लेकिन धीमी गति से।
मेरी चिंता यह है कि चीजों को "सही" तरीके से करने और कुछ डेटा स्रोत के deserializing के बाद, मैंने न केवल उस समस्या को जटिल कर दिया है, जिसे जटिल होने की आवश्यकता नहीं है, लेकिन मैंने पूरे लक्ष्य पर पूरी तरह से वापस नज़र रखी है एल्गोरिदम दृष्टिकोण: डेटा स्रोत का उपयोग नहीं करने के लिए! C # में, मैं इन स्ट्रिंग्स को एक एनेमरेटेड प्रकार या किसी चीज़ में रखने के बजाय, XML में स्टफ करने और बनाने के लिए एक वर्ग namespace Verb.Conjugation
(उदाहरण के लिए class Irregular
) बना सकता हूँ class IrregularVerbDeserializer
।
सवाल तो: यह कड़ी मेहनत से कोड तार कर रहे हैं के लिए उपयुक्त है बहुत एक आवेदन के जीवनकाल के दौरान परिवर्तन की संभावना नहीं? बेशक मैं नहीं कर सकता की गारंटी 100% है कि वे परिवर्तन नहीं होगा, लेकिन जोखिम बनाम लागत लगभग मेरी आँखों में वज़न तुच्छ है - hardcoding यहां बेहतर विचार है।
संपादित करें : प्रस्तावित डुप्लिकेट पूछता है कि बड़ी संख्या में स्थिर स्ट्रिंग्स को कैसे संग्रहीत किया जाए , जबकि मेरा सवाल यह है कि मुझे इन स्थिर स्ट्रिंग्स को हार्ड-कोड करना चाहिए ।