알고리즘

a + b + c = 1000 이 되는 피타고라스 수 ( Dart문법 (4) 연습용 )

hamiric 2024. 10. 28. 16:27

프로젝트 오일러 9번문제

 

 

>> 함수형 프로그래밍을 적극 활용하자

>> 나름 where, expand, reduce 사용법 좀 익히기 좋은 문제였던듯.. ㅎㅎ

 

import 'dart:math';

void makeList(int n, List<List<int>> p) {
  for (int i = 1; i < n; i++) {
    for (int j = 2; j < n; j++) {
      int k = n - (i + j);

      if (i < j && j < k) {
        p.add([i, j, k]);
      }
    }
  }
}

void main() {
  List<List<int>> p = [];

  makeList(1000, p);

  var pita = p
      .where((list) {
        return (pow(list[0], 2) + pow(list[1], 2) == pow(list[2], 2));
      })
      .expand((list) => list)
      .toList();

  print(pita);

  var mul = pita.reduce((a, b) => a * b);

  print(mul);
}

'알고리즘' 카테고리의 다른 글

세자리 수를 곱해 만들 수 있는 가장 큰 대칭수  (0) 2024.10.27