بمعرفة دلوين مختلفين في الحجم وأي الدلوين يجب ملؤه أولًا، حدّد عدد الإجراءات اللازمة لقياس عدد محدد من اللترات بنقل السائل بين الدلوين بذكاء.
هناك بعض القواعد التي يجب أن يتبعها حلّك:
سيستقبل برنامجك المدخلات التالية:
وعلى برنامجك أن يحدد:
ملاحظة: أي تغيير يُجرى على أحد الدلوين أو كليهما يُحتسب إجراءً واحدًا (1).
مثال: يستوعب الدلو الأول حتى 7 لترات، ويستوعب الدلو الثاني حتى 11 لترًا. لنفترض أن الدلو الأول يحتوي في خطوة معينة على 7 لترات وأن الدلو الثاني يحتوي على 8 لترات (7,8). إذا فرّغت الدلو الأول دون إجراء أي تغيير على الدلو الثاني، فتبقى لديك 0 لتر و8 لترات على الترتيب (0,8)، فهذا يُحتسب إجراءً واحدًا. أما إذا كنت قد سكبت من الدلو الأول في الدلو الثاني حتى امتلأ الدلو الثاني، فتصبح النتيجة 4 لترات في الدلو الأول و11 لترًا في الدلو الثاني (4,11)، فهذا أيضًا يُحتسب إجراءً واحدًا فقط.
مثال آخر: يستوعب الدلو الأول 3 لترات، ويستوعب الدلو الثاني حتى 5 لترات. ويُقال لك إن عليك البدء بالدلو الأول. لذا فإن إجراءك الأول هو ملء الدلو الأول. ثم تختار تفريغ الدلو الأول في إجراءك الثاني. أما في إجراءك الثالث، فلا يجوز لك ملء الدلو الثاني، لأن هذا يخالف القاعدة الثالثة: لا يجوز أن تنتهي بعد أي إجراء إلى حالة يكون فيها الدلو الذي بدأت به فارغًا والدلو الآخر ممتلئًا.
كُتبت بـ<3 في Fullstack Academy بقلم Lindsay Levine.
أحيانًا يكون من الضروري رفع استثناء. وعندما تفعل ذلك، ينبغي أن تُضمّن دائمًا رسالة خطأ ذات معنى تشير إلى مصدر الخطأ. فهذا يجعل الكود أكثر قابلية للقراءة ويساعد كثيرًا في تصحيح الأخطاء. وفي الحالات التي تعرف فيها أن مصدر الخطأ سيكون من نوع معيّن، يمكنك اختيار رفع أحد أنواع الأخطاء المدمجة، لكن يجب أن تُضمّن مع ذلك رسالة ذات معنى.
يتطلب هذا التمرين تحديدًا أن تستخدم عبارة raise من أجل «إطلاق» ValueError. لن تنجح الاختبارات إلا إذا استخدمت raise مع exception وأضفت معه رسالة.
لرفع ValueError مع رسالة، اكتب الرسالة كوسيط لنوع exception:
raise ValueError("A meaningful error message here.")
سجّل في Exercism لتتعلّم وتتقن Python عبر 17 مفهومًا146 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.