Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enum PassengerGender { male, female }
- class BusPriceCounter {
- double countPrice({
- required double distance,
- required int age,
- required PassengerGender gender,
- bool hasBenefit = false,
- }) {
- final discountCoeff = _countDiscountCoeff(
- age: age,
- gender: gender,
- hasBenefit: hasBenefit,
- );
- final distancePrice = _countDistancePrice(distance);
- return discountCoeff * distancePrice;
- }
- double _countDiscountCoeff({
- required int age,
- required PassengerGender gender,
- bool hasBenefit = false,
- }) {
- if (hasBenefit || age <= 3) {
- return 0;
- }
- if (7 <= age && age <= 18) {
- return 0.5;
- }
- if (gender == PassengerGender.male && age >= 65 ||
- gender == PassengerGender.female && age >= 60) {
- return 0.5;
- }
- return 1;
- }
- double _countDistancePrice(double distance) {
- if (distance <= 20) {
- return 100;
- }
- if (distance > 20 && distance <= 100) {
- return 150;
- }
- if (distance > 100 && distance <= 200) {
- return 200;
- }
- return 400;
- }
- }
- void main() {
- final counter = BusPriceCounter();
- // Example usage
- final price1 = counter.countPrice(
- distance: 15,
- age: 25,
- gender: PassengerGender.male,
- );
- print('Price 1: $price1'); // Expected: 100.0
- final price2 = counter.countPrice(
- distance: 50,
- age: 10,
- gender: PassengerGender.female,
- );
- print('Price 2: $price2'); // Expected: 75.0
- final price3 = counter.countPrice(
- distance: 150,
- age: 70,
- gender: PassengerGender.male,
- );
- print('Price 3: $price3'); // Expected: 100.0
- final price4 = counter.countPrice(
- distance: 300,
- age: 5,
- gender: PassengerGender.female,
- );
- print('Price 4: $price4'); // Expected: 0.0
- final price5 = counter.countPrice(
- distance: 80,
- age: 30,
- gender: PassengerGender.female,
- hasBenefit: true,
- );
- print('Price 5: $price5'); // Expected: 0.0
- final price6 = counter.countPrice(
- distance: 250,
- age: 40,
- gender: PassengerGender.male,
- );
- print('Price 6: $price6'); // Expected: 400.0
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement