aboutsummaryrefslogtreecommitdiff
path: root/challenge-014/zapwai/perl/ch-2.pl
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