المثلث

المثلث

متوسط

التعليمات

حدّد ما إذا كان المثلث متساوي الأضلاع، أو متساوي الساقين، أو مختلف الأضلاع.

المثلث متساوي الأضلاع أضلاعه الثلاثة متساوية في الطول.

المثلث متساوي الساقين فيه ضلعان على الأقل متساويان في الطول. (يُحدَّد أحيانًا بأنه ذو ضلعين متساويين في الطول بالضبط، لكننا في هذا التمرين سنقول إنه ذو ضلعين متساويين على الأقل.)

المثلث مختلف الأضلاع أضلاعه الثلاثة مختلفة في الطول.

ملاحظة

لكي يكون الشكل مثلثًا أصلًا، يجب أن يكون طول كل ضلع > 0، وأن يكون مجموع طولي أي ضلعين أكبر من أو يساوي طول الضلع الثالث.

Note

المثلثات المنحلّة هي مثلثات يكون فيها مجموع طولي ضلعين مساويًا لطول الضلع الثالث، مثل 1, 1, 2. وقد اخترنا ألّا نُضمّن اختبارات للمثلثات المنحلّة في هذا التمرين. يمكنك التعامل مع هذه الحالات إن أردت ذلك، أو تجاهلها بلا مشكلة.

في المعادلات:

لنفترض أن a وb وc هي أضلاع المثلث. عندئذٍ يجب أن تكون التعبيرات الثلاثة التالية صحيحة:

a + b ≥ c
b + c ≥ a
a + c ≥ b

انظر متباينة المثلث

يمكن تنفيذ ذلك بأشكال كثيرة. إليك بعض الموضوعات التي قد تساعدك، حسب الأسلوب الذي تتبعه.

أو ربما تتوصل إلى أسلوب لا يستخدم أيًّا منها!

أطوال غير صحيحة

يختبر التمرين الأساسي التعرف على المثلثات التي تكون أضلاعها أعدادًا صحيحة كلها. ومع ذلك، هناك مثلثات لا يمكن تمثيلها بأعداد صحيحة خالصة. ومن الأمثلة البسيطة مثلث فيه زاوية قياسها 90 درجة بين ضلعين متساويين طول كل منهما 1. طول ضلعه الثالث هو الجذر التربيعي للعدد 2، وهو عدد غير نسبي (أي أنه لا يمكن كتابته على هيئة عدد صحيح أو كسر).

سيكون مضجرًا أن تعيد كتابة دوال التحليل لتتعامل مع حالات الأعداد الصحيحة والأعداد العشرية معًا، والأكثر إضجارًا أن تفعل ذلك مع كل أنواع الأعداد الصحيحة والعشرية الممكنة: فمع الصيغتين الموقّعة وغير الموقّعة لعروض 8 و16 و32 و64 و128 بت، سيكون ذلك 10 إعادات تنفيذ للكود نفسه جوهريًا، حتى قبل التفكير في الأعداد العشرية!

ثمة طريقة أفضل: الأنواع العامة. فبإعادة كتابة Triangle لديك على هيئة Triangle<T>، يمكنك كتابة الكود مرة واحدة، وترك مهمة توليد كل تلك التخصيصات للمصرّف. لاحظ أنك ستحتاج، لاستخدام العمليات الرياضية، إلى تقييد نوعك العام بالأنواع التي تدعم تلك العمليات عبر السمات.

هناك بعض الاختبارات الإضافية التي يمكنك تشغيلها لاختبار تنفيذك على الأعداد العشرية. لتفعيلها، شغّل اختباراتك مع علم الميزة generic، هكذا:

cargo test --features generic
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Rust Exercism

مستعد لبدء المثلث؟

سجّل في Exercism لتتعلّم وتتقن Rust عبر 99 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.