각 단어에 포함된 음절 수를 기준으로 단어 목록을 오름차순으로 정렬하는 방법은 무엇입니까?
입력 예:
something
important
dog
cat
bookshelf
예제 출력:
dog
cat
something
bookshelf
important
답변1
이 Perl 스크립트는 단어(표준 입력 및/또는 명령줄에 나열된 파일 이름에서 한 줄에 하나씩 읽음)를 키로 사용하고 음절 개수를 값으로 사용하여 해시를 구축합니다.
그런 다음 음절 개수별로 정렬된 해시 키를 인쇄합니다.
#! /usr/bin/perl
use strict;
use Lingua::EN::Syllable;
my %words = ();
while(<>) {
chomp;
$words{$_} = syllable($_);
};
print join("\n",sort { $words{$a} <=> $words{$b} } keys(%words)), "\n";
산출:
cat
dog
bookshelf
something
important
각 단어의 음절 수를 인쇄하려면 마지막 줄을 다음과 같이 변경하세요.
foreach my $word (sort { $words{$a} <=> $words{$b} } keys(%words)) {
printf "%2i: %s\n", $words{$word}, $word;
};
산출:
1: cat
1: dog
2: bookshelf
3: something
3: important
이 버전은 모듈 자체가 주장하는 것처럼추정음절 수. "bookshelf"는 2음절만 있는 것으로 올바르게 계산되지만 "something"도 2음절이어야 합니다.
모듈 코드를 자세히 확인하지는 않았지만 아마도 e
. m
많은 (대부분?) 단어에서 이것은 무음 음절이 아니라 e
추가 음절입니다.