Language/Dart

[Exercism] Bob

paran21 2022. 9. 8. 16:05

https://exercism.org/tracks/dart/exercises/bob

 

Bob in Dart on Exercism

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

exercism.org

 

주어진 질문에 따라 알맞은 반응을 return 하는 문제이다.

 

정규표현식을 활용해서 각 조건을 만들어 주었다.

 

문제 자체가 많이 어렵지는 않았는데, 조건이 여러 개 들어가다보니 조건을 체크하는 순서도 고려해야 했다.

조건을 크게 isQuestion과 isYelling으로 구분할 수 있는데, 둘 다 적용되야 하는 경우를 가장 먼저 제시해주고, 그 다음에 각 조건에 맞는 경우를 리턴하였다.

 

그리고 테스트코드 중에 숫자와 띄어쓰기로 조건에 맞지 않는 경우들이 있어서, 처음에 숫자와 띄어쓰기를 모두 제거하고 조건에 맞도록 하였다.

class Bob {
  String response(String question) {
    question = _removeSpaceAndDigit(question);

    if (_isNoWord(question)) return 'Fine. Be that way!';
    if (_isQuestion(question) && _isYelling(question)) return "Calm down, I know what I'm doing!";
    if (_isQuestion(question)) return 'Sure.';
    if (_isYelling(question)) return 'Whoa, chill out!';

    return 'Whatever.';
  }

  bool _isQuestion(String question) => question.endsWith('?');
  bool _isYelling(String question) => !question.contains(RegExp('[a-z]')) && question.contains(RegExp('[A-Z]'));
  bool _isNoWord(String question) => question.isEmpty;
  String _removeSpaceAndDigit(String question) => question.trim().replaceAll(RegExp('[0-9]'), '');
}

 

 

'Language > Dart' 카테고리의 다른 글

[Exercism] Hamming  (0) 2022.09.08
[Excercism] Space Age #enum  (0) 2022.09.08
[Exercism] Word Count  (0) 2022.08.31
[Exercism] Difference Of Squares  (0) 2022.08.30
[Style] no_leading_underscores_for_local_identifiers  (0) 2022.08.19