devGYU World
[ Exercism Dart] Difference Of Squares 솔루션 본문

본 예제는 리스트의 합의 제곱(square of the sum)과 리스트의 제곱의 합(sum of the square)을 구하고 두 합의 차이를 구하는 예제이다.
리스트를 생성하는 함수를 설정 한 뒤 합의 제곱과 제곱의 합을 구하는 함수에서 각각 리스트를 호출하고 조건에 맞춰 pow() 함수를 활용해 제곱의 합을 수행하는 함수를 작성하였고 아래의 결과와 같다.
import 'dart:math';
class DifferenceOfSquares {
// 리스트를 생성하는 함수
List<int> makeSquare(int number) {
List<int> square = [];
for (int i = 1; i <= number; i++) square.add(i);
return square;
}
// 리스트의 합의 제곱을 구하는 함수
int squareOfSum(int number) {
num squareSum;
List<int> square = makeSquare(number);
squareSum = square.fold(0, (previousValue, element) {
return pow(element, 2);
});
return squareSum.toInt();
}
// 리스트의 제곱의 합을 구하는 함수
int sumOfSquares(int number) {
num sumSquare;
List<int> square = makeSquare(number);
sumSquare = pow(
square.fold(0, (previousValue, element) {
return previousValue + element;
}),
2);
return sumSquare.toInt();
}
// 두 합의 차이를 구하는 함수
int differenceOfSquares(int number) {
int squareSum = squareOfSum(number);
int sumSquare = sumOfSquares(number);
return squareSum - sumSquare;
}
}
이때 사용되는 fold() 함수는 리스트의 값을 누적하여 반환시켜주는 함수이다.
list.fold(initialValue, (previousValue, element) => null)
initialValue를 설정하면 화살표 함수 뒤의 연산을 수행한 뒤 previousValue에 누적하여 반환한다.
이때 element는 리스트 내의 element를 뜻한다.
참고
Difference Of Squares in Dart on Exercism
Can you solve Difference Of Squares in Dart? Improve your Dart skills with support from our world-class team of mentors.
GitHub - gyu0710/dart: Exercism Dart Solutions
Exercism Dart Solutions. Contribute to gyu0710/dart development by creating an account on GitHub.
github.com
'etc > exercise' 카테고리의 다른 글
[Exercism Dart] Armstrong Numbers 솔루션 (0) | 2022.03.18 |
---|---|
[ Exercism Dart] Scrabble Score 솔루션 (0) | 2022.03.18 |
[Exercism Dart] Leap 솔루션 (0) | 2022.03.18 |
[Exercism Dart] Two Fer 솔루션 (0) | 2022.03.18 |
[Exercism Dart] Hello World 솔루션 (0) | 2022.03.18 |
Comments