[CodeKata Dart] Sum of positive


リンク

  • https://www.codewars.com/kata/5715eaedb436cf5606000381/train/dart
  • 私の答え

    int positiveSum(List<int> arr) {
      // arr가 비어있지않거나, arr에서 0보다 큰 숫자를 List로 만든 것이 비어있으면 0을 리턴
      if (arr.isEmpty || arr.where((num) => num > 0).toList().isEmpty) {
        return 0;
      } else {
        // arr에서 0보다 큰 숫자들을 List로 만들고 List<int> 타입인 positiveNumList에 할당
        List<int> positiveNumList = arr.where((num) => num > 0).toList();
        // positiveNumList에 reduce 메서드를 활용해서 List의 모든 수를 더하고, int 타입인 sum에 할당
        int sum = positiveNumList.reduce((a, b) => a + b);
        // sum 리턴
        return sum;
      }
    }

    最適なシナリオ

    import "dart:math";
    
    int positiveSum(List<int> xs) {
      return xs.fold(0, (a, x) => a + max(x, 0));
    }

    1行解く

    int positiveSum(List<int> arr) => arr.where((x) => x > 0).fold(0, (a, b) => a + b);