aboutsummaryrefslogtreecommitdiff
path: root/challenge-237/barroff/raku/ch-2.p6
blob: 7249ae51f8a381950883319747edc2f2598389fa (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
#!/usr/bin/env raku

use v6.d;

sub greatness(@ints, @permutation --> Int:D) {
    sum(map({ $_[0] < $_[1] ?? 1 !! 0 }, zip(@ints, @permutation)));
}

sub maximise-greatness(@ints --> Int:D) {
    max(map({ greatness(@ints, $_) }, permutations(@ints).race));
}

#| Run test cases
multi sub MAIN('test') {
    use Test;
    plan 2;

    is maximise-greatness([1, 3, 5, 2, 1, 3, 1]), 4,
        'works for (1, 3, 5, 2, 1, 3, 1)';
    is maximise-greatness([1, 2, 3, 4]), 3, 'works for (1, 2, 3, 4)';
}

#| Take user provided list like 1 1 2 2 2 3
multi sub MAIN(*@ints where @ints.elems1) {
    say maximise-greatness(@ints);
}