بمعرفة دلوين مختلفين في الحجم وأي الدلوين يجب ملؤه أولًا، حدّد عدد الإجراءات اللازمة لقياس عدد محدد من اللترات بنقل السائل بين الدلوين بذكاء.
هناك بعض القواعد التي يجب أن يتبعها حلّك:
سيستقبل برنامجك المدخلات التالية:
وعلى برنامجك أن يحدد:
ملاحظة: أي تغيير يُجرى على أحد الدلوين أو كليهما يُحتسب إجراءً واحدًا (1).
مثال: يستوعب الدلو الأول حتى 7 لترات، ويستوعب الدلو الثاني حتى 11 لترًا. لنفترض أن الدلو الأول يحتوي في خطوة معينة على 7 لترات وأن الدلو الثاني يحتوي على 8 لترات (7,8). إذا فرّغت الدلو الأول دون إجراء أي تغيير على الدلو الثاني، فتبقى لديك 0 لتر و8 لترات على الترتيب (0,8)، فهذا يُحتسب إجراءً واحدًا. أما إذا كنت قد سكبت من الدلو الأول في الدلو الثاني حتى امتلأ الدلو الثاني، فتصبح النتيجة 4 لترات في الدلو الأول و11 لترًا في الدلو الثاني (4,11)، فهذا أيضًا يُحتسب إجراءً واحدًا فقط.
مثال آخر: يستوعب الدلو الأول 3 لترات، ويستوعب الدلو الثاني حتى 5 لترات. ويُقال لك إن عليك البدء بالدلو الأول. لذا فإن إجراءك الأول هو ملء الدلو الأول. ثم تختار تفريغ الدلو الأول في إجراءك الثاني. أما في إجراءك الثالث، فلا يجوز لك ملء الدلو الثاني، لأن هذا يخالف القاعدة الثالثة: لا يجوز أن تنتهي بعد أي إجراء إلى حالة يكون فيها الدلو الذي بدأت به فارغًا والدلو الآخر ممتلئًا.
كُتبت بـ<3 في Fullstack Academy بقلم Lindsay Levine.
| السجل | الاستخدام | النوع | الوصف |
|---|---|---|---|
$a0 |
إدخال | عنوان | مصفوفة كلمات تحتوي على سعات الدلاء |
$a1 |
إدخال | عدد صحيح | الدلو الابتدائي (1 أو 2) |
$a2 |
إدخال | عدد صحيح | الحجم المستهدف |
$a3 |
إدخال/إخراج | عنوان | مصفوفة كلمات تحتوي على محتويات الدلاء النهائية |
$v0 |
إخراج | عدد صحيح | عدد الإجراءات المطلوبة، و-1 إذا كان ذلك غير ممكن |
$t0-9 |
مؤقت | أي | تُستخدم للتخزين المؤقت |
سجّل في Exercism لتتعلّم وتتقن MIPS Assembly عبر 70 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.