يُعرَّف العدد النسبي بأنه ناتج قسمة عددين صحيحين a وb، يُسمّى الأول البسط ويُسمّى الثاني المقام، حيث b != 0.
لاحظ أن المقام لا يمكن أن يكون صفرًا من الناحية الرياضية. لكن في كثير من تطبيقات الأعداد النسبية، ستجد أن المقام مسموح له بأن يكون صفرًا، بسلوك مشابه للانهاية الموجبة أو السالبة في أعداد الفاصلة العائمة. وفي تلك الحالات، لا يزال المقام والبسط عمومًا غير قادرين على أن يكونا صفرًا في الوقت نفسه.
القيمة المطلقة |r| للعدد النسبي r = a/b تساوي |a|/|b|.
مجموع عددين نسبيين r₁ = a₁/b₁ وr₂ = a₂/b₂ هو r₁ + r₂ = a₁/b₁ + a₂/b₂ = (a₁ * b₂ + a₂ * b₁) / (b₁ * b₂).
الفرق بين عددين نسبيين r₁ = a₁/b₁ وr₂ = a₂/b₂ هو r₁ - r₂ = a₁/b₁ - a₂/b₂ = (a₁ * b₂ - a₂ * b₁) / (b₁ * b₂).
حاصل ضرب (ضرب) عددين نسبيين r₁ = a₁/b₁ وr₂ = a₂/b₂ هو r₁ * r₂ = (a₁ * a₂) / (b₁ * b₂).
قسمة عدد نسبي r₁ = a₁/b₁ على عدد نسبي آخر r₂ = a₂/b₂ هي r₁ / r₂ = (a₁ * b₂) / (a₂ * b₁) إذا لم يكن a₂ صفرًا.
رفع عدد نسبي r = a/b إلى قوة عدد صحيح غير سالب n هو r^n = (a^n)/(b^n).
رفع عدد نسبي r = a/b إلى قوة عدد صحيح سالب n هو r^n = (b^m)/(a^m)، حيث m = |n|.
رفع عدد نسبي r = a/b إلى عدد حقيقي (فاصلة عائمة) x هو ناتج القسمة (a^x)/(b^x)، وهو عدد حقيقي.
رفع عدد حقيقي x إلى عدد نسبي r = a/b هو x^(a/b) = root(x^a, b)، حيث root(p, q) هو الجذر من الرتبة q للعدد p.
نفّذ العمليات التالية:
يجب أن يكون تطبيقك للأعداد النسبية مختصرًا دائمًا إلى أبسط صورة.
على سبيل المثال، يجب أن يُختصر 4/4 إلى 1/1، ويجب أن يُختصر 30/60 إلى 1/2، ويجب أن يُختصر 12/8 إلى 3/2، وهكذا.
لاختصار عدد نسبي r = a/b، اقسم a وb على القاسم المشترك الأكبر (gcd) لكل من a وb.
لذا، على سبيل المثال، gcd(12, 8) = 4، لذلك يمكن اختصار r = 12/8 إلى (12/4)/(8/4) = 3/2.
يجب أن تكون الصورة المختصرة للعدد النسبي في "الصيغة القياسية" (يجب أن يكون المقام دائمًا عددًا صحيحًا موجبًا).
إذا وُجد مقام بعدد صحيح سالب، فاضرب البسط والمقام في -1 لضمان الوصول إلى الصيغة القياسية.
على سبيل المثال، يجب اختصار 3/-4 إلى -3/4
افترض أن لغة البرمجة التي تستخدمها لا تتضمن تطبيقًا للأعداد النسبية.
عرّف صفًا باسم rat بخانتين هما numerator وdenominator.
يجب أن تختزل <rat> وسائطها إلى أبسط صورة، مع وضع الإشارة على البسط (بحيث يكون المقام دائمًا موجبًا).
<rat> ( numerator denominator -- rat )، بناء عدد نسبي مختزل.>rat ( pair -- rat )، بناء rat من { numerator denominator }.rat>pair ( rat -- pair )، إرجاع { numerator denominator }.r+ ( a b -- c )، r- ( a b -- c )، r* ( a b -- c )، r/ ( a b -- c )، إجراء عمليات حسابية على عددين نسبيين.r-abs ( a -- |a| )، القيمة المطلقة.r^ ( a n -- a^n )، رفع عدد نسبي إلى أس صحيح (الأسس السالبة مسموحة).real^r ( x a -- y )، رفع عدد حقيقي إلى أس نسبي وإرجاع عدد عائم.لا تعمل عموميات MATH: في Factor (+، -، *، /) إلا على التسلسل الهرمي الرياضي المدمج، لذلك يستخدم هذا التمرين أسماء كلمات مخصصة بدلًا من طرق على تلك العموميات.
سجّل في Exercism لتتعلّم وتتقن Factor عبر 47 مفهومًا163 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.