Advertisement
ForestFox

госы_автобус_dart

Jun 1st, 2025
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.17 KB | None | 0 0
  1. enum PassengerGender { male, female }
  2.  
  3. class BusPriceCounter {
  4.   double countPrice({
  5.     required double distance,
  6.     required int age,
  7.     required PassengerGender gender,
  8.     bool hasBenefit = false,
  9.   }) {
  10.     final discountCoeff = _countDiscountCoeff(
  11.       age: age,
  12.       gender: gender,
  13.       hasBenefit: hasBenefit,
  14.     );
  15.     final distancePrice = _countDistancePrice(distance);
  16.     return discountCoeff * distancePrice;
  17.   }
  18.  
  19.   double _countDiscountCoeff({
  20.     required int age,
  21.     required PassengerGender gender,
  22.     bool hasBenefit = false,
  23.   }) {
  24.     if (hasBenefit || age <= 3) {
  25.       return 0;
  26.     }
  27.     if (7 <= age && age <= 18) {
  28.       return 0.5;
  29.     }
  30.  
  31.     if (gender == PassengerGender.male && age >= 65 ||
  32.         gender == PassengerGender.female && age >= 60) {
  33.       return 0.5;
  34.     }
  35.     return 1;
  36.   }
  37.  
  38.   double _countDistancePrice(double distance) {
  39.     if (distance <= 20) {
  40.       return 100;
  41.     }
  42.     if (distance > 20 && distance <= 100) {
  43.       return 150;
  44.     }
  45.     if (distance > 100 && distance <= 200) {
  46.       return 200;
  47.     }
  48.     return 400;
  49.   }
  50. }
  51.  
  52. void main() {
  53.   final counter = BusPriceCounter();
  54.  
  55.   // Example usage
  56.   final price1 = counter.countPrice(
  57.     distance: 15,
  58.     age: 25,
  59.     gender: PassengerGender.male,
  60.   );
  61.   print('Price 1: $price1'); // Expected: 100.0
  62.  
  63.   final price2 = counter.countPrice(
  64.     distance: 50,
  65.     age: 10,
  66.     gender: PassengerGender.female,
  67.   );
  68.   print('Price 2: $price2'); // Expected: 75.0
  69.  
  70.   final price3 = counter.countPrice(
  71.     distance: 150,
  72.     age: 70,
  73.     gender: PassengerGender.male,
  74.   );
  75.   print('Price 3: $price3'); // Expected: 100.0
  76.  
  77.   final price4 = counter.countPrice(
  78.     distance: 300,
  79.     age: 5,
  80.     gender: PassengerGender.female,
  81.   );
  82.   print('Price 4: $price4'); // Expected: 0.0
  83.  
  84.   final price5 = counter.countPrice(
  85.     distance: 80,
  86.     age: 30,
  87.     gender: PassengerGender.female,
  88.     hasBenefit: true,
  89.   );
  90.   print('Price 5: $price5'); // Expected: 0.0
  91.  
  92.   final price6 = counter.countPrice(
  93.     distance: 250,
  94.     age: 40,
  95.     gender: PassengerGender.male,
  96.   );
  97.   print('Price 6: $price6'); // Expected: 400.0
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement