aboutsummaryrefslogtreecommitdiff
path: root/challenge-053/mohammad-anwar/raku/ch-2.p6
blob: 2db2c332e826034f8ee2eebb6035e85fb3c9703d (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
#!/usr/bin/env perl6

use v6.c;

sub MAIN(Int $count = 2) {
    die "ERROR: Invalid count $count.\n"
        unless $count ~~ any (1, 2, 3, 4, 5);

    my @chars = <a e i o u>;

    if $count == 1 {
        say @chars.join("\n");
        exit;
    }

    my @char-sets = @chars.combinations: $count;
    my @comb-sets = @char-sets.map({ .join });

    my @rules = (
        rx/ a<[ie]>   /,
        rx/ e<[i]>    /,
        rx/ i<[aeou]> /,
        rx/ o<[au]>   /,
        rx/ u<[oe]>   /,
    );

    for @comb-sets -> $str {
        my $pass = False;
        for @rules -> $rule {
            if $str ~~ /$rule/ {
                $pass = True;
            }
        }
        say $str if $pass;
    }
}