Δίνονται δύο κουβάδες διαφορετικού μεγέθους και ποιος κουβάς θα γεμίσει πρώτος. Προσδιόρισε πόσες ενέργειες απαιτούνται για να μετρήσεις έναν ακριβή αριθμό λίτρων, μεταφέροντας στρατηγικά υγρό από τον έναν κουβά στον άλλο.
Υπάρχουν μερικοί κανόνες που πρέπει να ακολουθεί η λύση σου:
Το πρόγραμμά σου θα δέχεται ως είσοδο:
Το πρόγραμμά σου θα πρέπει να προσδιορίζει:
Σημείωση: κάθε αλλαγή σε έναν από τους δύο κουβάδες ή και στους δύο μετράει ως μία (1) ενέργεια.
Παράδειγμα: Ο κουβάς ένα χωράει μέχρι 7 λίτρα και ο κουβάς δύο χωράει μέχρι 11 λίτρα. Ας πούμε ότι σε ένα συγκεκριμένο βήμα ο κουβάς ένα περιέχει 7 λίτρα και ο κουβάς δύο περιέχει 8 λίτρα (7,8). Αν αδειάσεις τον κουβά ένα και δεν αλλάξεις τίποτα στον κουβά δύο, αφήνοντάς σε με 0 λίτρα και 8 λίτρα αντίστοιχα (0,8), αυτό μετράει ως μία ενέργεια. Αν αντ' αυτού είχες χύσει από τον κουβά ένα στον κουβά δύο μέχρι να γεμίσει ο κουβάς δύο, με αποτέλεσμα 4 λίτρα στον κουβά ένα και 11 λίτρα στον κουβά δύο (4,11), αυτό επίσης θα μετρούσε ως μία μόνο ενέργεια.
Άλλο παράδειγμα: Ο κουβάς ένα χωράει 3 λίτρα και ο κουβάς δύο χωράει μέχρι 5 λίτρα. Σου λένε ότι πρέπει να ξεκινήσεις με τον κουβά ένα. Έτσι, η πρώτη σου ενέργεια είναι να γεμίσεις τον κουβά ένα. Επιλέγεις να αδειάσεις τον κουβά ένα για τη δεύτερη ενέργειά σου. Για την τρίτη σου ενέργεια, δεν μπορείς να γεμίσεις τον κουβά δύο, γιατί αυτό παραβιάζει τον τρίτο κανόνα: δεν μπορείς να καταλήξεις, μετά από οποιαδήποτε ενέργεια, σε κατάσταση όπου ο αρχικός κουβάς είναι άδειος και ο άλλος κουβάς είναι γεμάτος.
Γράφτηκε με <3 στο Fullstack Academy από τη Lindsay Levine.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Lean με 100 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.