Language/Dart

[Exercism] Armstrong Numbers #num #math

paran21 2022. 8. 19. 16:32

https://exercism.org/tracks/dart/exercises/armstrong-numbers

 

Armstrong Numbers in Dart on Exercism

Can you solve Armstrong Numbers in Dart? Improve your Dart skills with support from our world-class team of mentors.

exercism.org

 

처음에 문제 조건을 잘못 이해해서 조금 해맸다.

 

먼저 제곱을 계산하기 위해 'dart:math' library를 사용하였다.

그리고 다트에서는 int.parse(String word)를 통해 String 숫자를 int로 변환할 수 있다.(double.parse도 있다!)

 

math의 pow를 사용해서 각 자리 숫자를 주어진 수(number)의 전체 길이만큼 계속 곱해서 나온 값의 총합(_sumOfEachNum)을 구한다.

그리고 이 값이 처음에 주어진 수와 일치하는지를 판별하면 된다.

 

pow의 리턴 타입은 int와 double를 포함하는 num이다.

 

import 'dart:math';

class ArmstrongNumbers {
  bool isArmstrongNumber(int number) {
    num _sumOfEachNum = _getSumOfEachNum(number);
    return _sumOfEachNum == number;
  }
  
  num _getSumOfEachNum(int number) {
    List<String> numbers = number.toString().split('');
    num _sum = 0;
    numbers.forEach((number) {
      _sum += pow(int.parse(number), numbers.length);
    });
    return _sum;
  }
}

 

다트에서는 private을 _로 선언하면 되는데, 너무 편해서 좋다!