blob: 19826d43168e0f40449fe432d84ccc11e0c514a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
use v5.38;
my $str = <<ENDL;
Alabama AL
Kentucky KY
Ohio OH
Alaska AK
Louisiana LA
Oklahoma OK
Arizona AZ
Maine ME
Oregon OR
Arkansas AR
Maryland MD
Pennsylvania PA
Massachusetts MA
California CA
Michigan MI
RhodeIsland RI
Colorado CO
Minnesota MN
SouthCarolina SC
Connecticut CT
Mississippi MS
SouthDakota SD
Delaware DE
Missouri MO
Tennessee TN
Montana MT
Texas TX
Florida FL
Nebraska NE
Georgia GA
Nevada NV
Utah UT
NewHampshire NH
Vermont VT
Hawaii HI
NewJersey NJ
Virginia VA
Idaho ID
NewMexico NM
Illinois IL
NewYork NY
Washington WA
Indiana IN
NorthCarolina NC
WestVirginia WV
Iowa IA
NorthDakota ND
Wisconsin WI
Kansas KS
Wyoming WY
ENDL
open my $fh, "<words" or die;
my @dict = <$fh>;
close $fh;
chomp @dict;
my @words;
foreach (@dict) {
if (length($_) % 2 == 0) {
push @words, uc $_ unless ($_ =~ /[b|q]/);
}
}
my %h = split(" ", $str);
my @letters = sort values %h;
my @composites = @letters;
my $n = 0;
my $len = @letters;
do {
my @newlist;
foreach my $item (@composites) {
for my $i (0 .. $#letters) {
push @newlist, $item.$letters[$i];
}
}
$n++;
push @composites, @newlist;
} while ( $n < 3 ); # max length of words is 2(n+1)
my @list = grep { /[AEIOU]+/ } @composites;
my $words = join(" ", @words);
my $let = "A";
for my $comp (@list) {
say $comp if ($words =~ / $comp /);
if ($let ne substr($comp,0,1)) {
say $let;
$let = substr($comp,0,1);
}
}
# MAINLAND
# MANDARIN
# MEMORIAL
|