implode function
Implementation
String implode(String input) {
/// 인접한 모음을 하나의 복합 모음으로 합친다.
final letters = mixMedial(input.split(''));
/// 모음으로 시작하는 그룹들을 만든다.
final createdGroups = createGroupsByMedial(letters);
/// 각 그룹을 순회하면서 복합자음을 정리하고, 앞 그룹에서 종성으로 사용하고 남은 자음들을 초성으로 가져온다.
final groups =
mixFinaleAndReplaceTheRemainingFinalesToInitials(createdGroups);
/// 각 글자에 해당하는 블록 단위로 나눈다.
final blocks = groups.fold<List<List<String>>>(
[], (acc, group) => acc..addAll(divideByBlock(group)));
return blocks.map(assemble).join();
}