Adott két különböző méretű vödör, valamint az, hogy melyik vödröt kell először megtölteni. Határozd meg, hány műveletre van szükség egy pontos litermennyiség kiméréséhez úgy, hogy a folyadékot stratégikusan átöntöd a vödrök között.
A megoldásodnak be kell tartania néhány szabályt:
A programod a következő bemeneteket kapja:
A programodnak meg kell határoznia:
Megjegyzés: ha bármelyik vagy mindkét vödör állapota megváltozik, az egy (1) műveletnek számít.
Példa: Az első vödörbe legfeljebb 7 liter fér, a másodikba pedig legfeljebb 11 liter. Tegyük fel, hogy egy adott lépésnél az első vödörben 7 liter, a másodikban 8 liter van (7,8). Ha kiüríted az első vödröt, és a másodikat nem változtatod meg, így 0, illetve 8 liter marad (0,8), az egy műveletnek számít. Ha viszont az első vödörből addig öntöttél volna a másodikba, amíg az meg nem telik, aminek eredményeként 4 liter lesz az első vödörben és 11 liter a másodikban (4,11), az szintén csak egy műveletnek számítana.
Egy másik példa: Az első vödörbe 3 liter fér, a másodikba pedig legfeljebb 5 liter. Az utasítás szerint az első vödörrel kell kezdened. Tehát az első műveleted az első vödör megtöltése. Második műveletként úgy döntesz, hogy kiüríted az első vödröt. A harmadik műveletnél nem töltheted meg a második vödröt, mert ez megsértené a harmadik szabályt: egyetlen művelet után sem kerülhetsz olyan állapotba, ahol a kezdő vödör üres, a másik pedig tele van.
<3-tel írta Lindsay Levine a Fullstack Academy szervezésében.
Néha szükség lehet arra, hogy kivételt dobj. Amikor ezt teszed, mindig adj meg egy beszédes hibaüzenetet, amely megmutatja, mi a hiba forrása. Ez olvashatóbbá teszi a kódodat, és jelentősen segít a debuggingban. Ha tudod, hogy a hiba forrása egy adott típusú lesz, dönthetsz úgy, hogy a beépített hibatípusok egyikét dobod, de ilyenkor is adj meg beszédes üzenetet.
Ennél a feladatnál a raise utasítással kell „dobnod” egy ValueError-t. A tesztek csak akkor lesznek sikeresek, ha az exception-t átadod a raise-nek, és üzenetet is fűzöl hozzá.
Ha üzenettel együtt szeretnél ValueError-t dobni, írd le az üzenetet az exception típus argumentumaként:
raise ValueError("A meaningful error message here.")
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Python nyelvet 17 fogalom146 feladat segítségével, valódi emberi mentorálással, mindez ingyen.