पता कीजिए कि कोई त्रिभुज समबाहु है, समद्विबाहु है या विषमबाहु।
समबाहु त्रिभुज की तीनों भुजाएँ एक ही लंबाई की होती हैं।
समद्विबाहु त्रिभुज की कम से कम दो भुजाएँ एक ही लंबाई की होती हैं। (कभी-कभी इसे ठीक दो भुजाओं की समान लंबाई वाला बताया जाता है, लेकिन इस अभ्यास के लिए हम कम से कम दो मानेंगे।)
विषमबाहु त्रिभुज की सभी भुजाएँ अलग-अलग लंबाई की होती हैं।
कोई आकृति त्रिभुज तभी कहलाती है जब उसकी सभी भुजाओं की लंबाई > 0 हो। साथ ही, किन्हीं भी दो भुजाओं की लंबाइयों का जोड़ तीसरी भुजा की लंबाई से अधिक या उसके बराबर होना चाहिए।
डीजेनरेट त्रिभुज ऐसे त्रिभुज होते हैं जिनमें दो भुजाओं की लंबाई का जोड़ तीसरी भुजा की लंबाई के बराबर होता है, जैसे 1, 1, 2।
हमने इस अभ्यास में डीजेनरेट त्रिभुजों के टेस्ट शामिल न करने का फैसला किया है।
अगर आप चाहें तो ऐसी स्थितियों को संभाल सकते हैं, या उन्हें निश्चिंत होकर छोड़ सकते हैं।
समीकरणों में:
मान लीजिए कि a, b और c त्रिभुज की भुजाएँ हैं।
तब नीचे दिए गए तीनों एक्सप्रेशन सही होने चाहिए:
a + b ≥ c
b + c ≥ a
a + c ≥ b
देखिए त्रिभुज असमिका
इसे कई तरह से लागू किया जा सकता है। आप जो तरीका अपनाते हैं, उसके हिसाब से नीचे दिए कुछ विषय आपकी मदद कर सकते हैं।
या हो सकता है कि आप ऐसा तरीका निकालें जिसमें इनमें से कुछ भी इस्तेमाल न हो!
मूल अभ्यास में ऐसे त्रिभुजों की पहचान जाँची जाती है जिनकी सभी भुजाएँ पूर्णांक होती हैं। लेकिन कुछ त्रिभुज ऐसे होते हैं जिन्हें केवल पूर्णांकों से नहीं दर्शाया जा सकता। इसका एक आसान उदाहरण वह त्रिभुज है जिसकी दो बराबर भुजाओं की लंबाई 1 है और उनके बीच 90 डिग्री का कोण है। उसकी तीसरी भुजा की लंबाई 2 का वर्गमूल होती है, जो एक अपरिमेय संख्या है (यानी इसे न पूर्णांक के रूप में लिखा जा सकता है, न भिन्न के रूप में)।
पूर्णांक और दशमलव संख्या, दोनों को संभालने के लिए विश्लेषण वाले फंक्शन दोबारा लिखना उबाऊ काम होगा। और हर संभव पूर्णांक व दशमलव टाइप के लिए ऐसा करना तो और भी उबाऊ होगा: 8, 16, 32, 64 और 128 बिट की चौड़ाई वाले साइन्ड और अनसाइन्ड रूपों को गिनें तो यह मूल रूप से एक ही कोड के 10 बार दोबारा लिखे जाने होंगे, और यह तो दशमलव संख्याओं की बात करने से पहले ही है!
इससे बेहतर तरीका भी है: जेनेरिक्स। अपने Triangle को Triangle<T> के रूप में दोबारा लिखिए, तो आप अपना कोड एक ही बार लिख सकते हैं और उन सारे स्पेशलाइज़ेशन बनाने का काम कंपाइलर को सौंप सकते हैं। ध्यान दीजिए कि गणितीय संक्रियाएँ इस्तेमाल करने के लिए आपको अपने जेनेरिक टाइप पर ऐसी शर्त लगानी होगी कि वह केवल उन्हीं टाइप के लिए काम करे जो ट्रेट की मदद से ये संक्रियाएँ सपोर्ट करते हैं।
कुछ बोनस टेस्ट भी हैं जिन्हें आप चला सकते हैं और जो आपके कोड को दशमलव संख्याओं पर जाँचते हैं। इन्हें चालू करने के लिए अपने टेस्ट generic फीचर फ्लैग के साथ चलाइए, इस तरह:
cargo test --features generic