https://exercism.org/tracks/dart/exercises/bob
주어진 질문에 따라 알맞은 반응을 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 |