البرمجة

ضرب الأرقام في OCAML وتحويل النتيجة إلى قائمة

في OCAML، يمكنك حلاً لهذه المشكلة عبر كتابة وظيفة تقوم بتحويل الأرقام من صورة قائمة إلى قيمة رقمية، ثم تقوم بضرب هاتين القيمتين وأخيرًا تحويل الناتج إلى قائمة جديدة.

فلنقم بكتابة الكود:

ocaml
(* تحويل قائمة من الأرقام إلى قيمة رقمية *) let rec list_to_number lst = match lst with | [] -> 0 | hd :: tl -> hd + 10 * (list_to_number tl) (* تحويل قيمة رقمية إلى قائمة من الأرقام *) let rec number_to_list n = if n < 10 then [n] else (number_to_list (n / 10)) @ [n mod 10] (* ضرب قائمتين من الأرقام والتمثيل النهائي *) let multiply_and_listify lst1 lst2 = let num1 = list_to_number lst1 in let num2 = list_to_number lst2 in let result = num1 * num2 in number_to_list result (* الاستخدام *) let lst1 = [1; 4; 5] in let lst2 = [3; 2; 3] in let result_list = multiply_and_listify lst1 lst2 in print_endline (String.concat "" (List.map string_of_int result_list))

هذا الكود يتيح لك تحقيق المطلوب، حيث يقوم بتحويل القائمتين إلى أرقام، يقوم بضربهما، ثم يحول الناتج إلى قائمة جديدة. يتم الطباعة النهائية باستخدام String.concat و List.map لتحويل الناتج النهائي إلى سلسلة نصية للطباعة.

المزيد من المعلومات

الكود المقدم يقدم حلاً بسيطًا وواضحًا للمشكلة المحددة، ولكن دعنا نسلط الضوء على بعض النواحي الفنية والتفاصيل الدقيقة:

  1. التحويل من قائمة إلى رقم والعكس:

    • list_to_number: هي وظيفة تقوم بتحويل قائمة من الأرقام إلى قيمة رقمية. تستخدم هذه الوظيفة تقنية القائمة المتصاعدة (match) لتحويل الرأس الحالي والقائمة المتبقية.
    • number_to_list: هي وظيفة تقوم بتحويل قيمة رقمية إلى قائمة من الأرقام. يتم ذلك عن طريق تقسيم العدد واستخدام التمديد (@) لدمج القائمة المستخرجة من الجزء الأول مع القائمة المتأتية من الجزء الثاني.
  2. ضرب الأرقام:

    • multiply_and_listify: هي وظيفة تأخذ قائمتين من الأرقام، تحولهما إلى قيمتين رقميتين، تقوم بضربهما، وأخيرًا تقوم بتحويل الناتج إلى قائمة جديدة باستخدام الوظيفة number_to_list.
  3. الاستخدام النهائي:

    • يتم استخدام الأرقام [1; 4; 5] و [3; 2; 3] كمدخلات في مثال الاستخدام، ويتم طباعة الناتج النهائي بتحويله إلى سلسلة نصية للطباعة.
  4. الطباعة:

    • يتم استخدام String.concat و List.map لتحويل القائمة النهائية إلى سلسلة نصية تُطبع على الشاشة.

بهذا الشكل، يوفر الكود حلاً قابلاً للفهم والتعديل، يستند إلى مفاهيم OCAML مثل تعريف الوظائف والتعامل مع القوائم. يمكنك تعديل الكود وتحسينه بحسب احتياجاتك، مثل إضافة التحقق من صحة الإدخال أو التعامل مع الأرقام السالبة.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!