음절 수에 따라 단어를 정렬하는 방법은 무엇입니까?

음절 수에 따라 단어를 정렬하는 방법은 무엇입니까?

각 단어에 포함된 음절 수를 기준으로 단어 목록을 오름차순으로 정렬하는 방법은 무엇입니까?

입력 예:

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추가 음절입니다.

관련 정보