aboutsummaryrefslogtreecommitdiff
path: root/challenge-273/dave-jacoby/perl/ch-1.pl
blob: eb1de94c524afbde9134fcfab557707191449a88 (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 perl

use strict;
use warnings;
use experimental qw{ bitwise fc postderef say signatures state };

use List::Util qw{max};

my @examples = (

    { str => "perl",      char => "e" },
    { str => "java",      char => "a" },
    { str => "python",    char => "m" },
    { str => "ada",       char => "a" },
    { str => "ballerina", char => "l" },
    { str => "analitik",  char => "k" },
);
for my $example (@examples) {
    my $char    = $example->{char};
    my $str     = $example->{str};
    my @str     = split //, $str;
    my $count   = scalar grep { $_ eq $char } @str;
    my $total   = scalar @str;
    my $output  = round( 100 * $count / $total );
    say <<"END";
Input:  \$str = "$str", \$char = "$char"
Output: "$output"
END
}

sub round ($number) {
    my $int = int $number;
    return $number if $number == $int;
    my $r = $number - $int;
    return $r < 0.5 ? $int : $int + 1;
}