Διαδρομές
/
Crystal
Crystal
/
Ασκήσεις
/
Δύο κουβάδες
Δύο κουβάδες

Δύο κουβάδες

Μέτριο

Οδηγίες

Δίνονται δύο κουβάδες διαφορετικού μεγέθους και ποιος κουβάς θα γεμίσει πρώτος. Προσδιόρισε πόσες ενέργειες απαιτούνται για να μετρήσεις έναν ακριβή αριθμό λίτρων, μεταφέροντας στρατηγικά υγρό από τον έναν κουβά στον άλλο.

Υπάρχουν μερικοί κανόνες που πρέπει να ακολουθεί η λύση σου:

  • Μπορείς να κάνεις μόνο μία ενέργεια τη φορά.
  • Υπάρχουν μόνο 3 πιθανές ενέργειες:
    1. Χύνεις τον έναν κουβά στον άλλον μέχρι να συμβεί ένα από τα εξής: α) ο πρώτος κουβάς να αδειάσει β) ο δεύτερος κουβάς να γεμίσει
    2. Αδειάζεις έναν κουβά και δεν κάνεις τίποτα στον άλλον.
    3. Γεμίζεις έναν κουβά και δεν κάνεις τίποτα στον άλλον.
  • Μετά από μια ενέργεια, δεν επιτρέπεται να καταλήξεις σε κατάσταση όπου ο αρχικός κουβάς από τον οποίο ξεκινάς είναι άδειος και ο άλλος κουβάς είναι γεμάτος.

Το πρόγραμμά σου θα δέχεται ως είσοδο:

  • το μέγεθος του κουβά ένα
  • το μέγεθος του κουβά δύο
  • τον επιθυμητό αριθμό λίτρων που θέλεις να φτάσεις
  • ποιον κουβά να γεμίσεις πρώτα, είτε τον κουβά ένα είτε τον κουβά δύο

Το πρόγραμμά σου θα πρέπει να προσδιορίζει:

  • τον συνολικό αριθμό ενεργειών που χρειάζονται για να φτάσεις στον επιθυμητό αριθμό λίτρων, συμπεριλαμβανομένου του πρώτου γεμίσματος του αρχικού κουβά
  • ποιος κουβάς θα καταλήξει να έχει τον επιθυμητό αριθμό λίτρων, είτε ο κουβάς ένα είτε ο κουβάς δύο
  • πόσα λίτρα απομένουν στον άλλον κουβά

Σημείωση: κάθε αλλαγή σε έναν από τους δύο κουβάδες ή και στους δύο μετράει ως μία (1) ενέργεια.

Παράδειγμα: Ο κουβάς ένα χωράει μέχρι 7 λίτρα και ο κουβάς δύο χωράει μέχρι 11 λίτρα. Ας πούμε ότι σε ένα συγκεκριμένο βήμα ο κουβάς ένα περιέχει 7 λίτρα και ο κουβάς δύο περιέχει 8 λίτρα (7,8). Αν αδειάσεις τον κουβά ένα και δεν αλλάξεις τίποτα στον κουβά δύο, αφήνοντάς σε με 0 λίτρα και 8 λίτρα αντίστοιχα (0,8), αυτό μετράει ως μία ενέργεια. Αν αντ' αυτού είχες χύσει από τον κουβά ένα στον κουβά δύο μέχρι να γεμίσει ο κουβάς δύο, με αποτέλεσμα 4 λίτρα στον κουβά ένα και 11 λίτρα στον κουβά δύο (4,11), αυτό επίσης θα μετρούσε ως μία μόνο ενέργεια.

Άλλο παράδειγμα: Ο κουβάς ένα χωράει 3 λίτρα και ο κουβάς δύο χωράει μέχρι 5 λίτρα. Σου λένε ότι πρέπει να ξεκινήσεις με τον κουβά ένα. Έτσι, η πρώτη σου ενέργεια είναι να γεμίσεις τον κουβά ένα. Επιλέγεις να αδειάσεις τον κουβά ένα για τη δεύτερη ενέργειά σου. Για την τρίτη σου ενέργεια, δεν μπορείς να γεμίσεις τον κουβά δύο, γιατί αυτό παραβιάζει τον τρίτο κανόνα: δεν μπορείς να καταλήξεις, μετά από οποιαδήποτε ενέργεια, σε κατάσταση όπου ο αρχικός κουβάς είναι άδειος και ο άλλος κουβάς είναι γεμάτος.

Γράφτηκε με <3 στο Fullstack Academy από τη Lindsay Levine.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Crystal Exercism

Έτοιμος να ξεκινήσεις την άσκηση Δύο κουβάδες;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Crystal με 26 έννοιες142 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.