blob: 0b38dd9979880aefd3936dd101efacaecb5971ed (
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
|
#!/usr/bin/env raku
#
# Task 2 from
# https://perlweeklychallenge.org/blog/perl-weekly-challenge-083/
my @a = 12, 2, 100;
# Number of sign flips: 2; min sum: 86
# my @a = 12, 2, 10;
# Number of sign flips: 1; min sum: 0
# my @a = 3, 10, 8;
# Number of sign flips: 1; min sum: 1
my $min_sum = Inf;
my $min_flips = Inf;
my $min_comb = '';
my $fmt = '%0' ~ @a.elems ~ 'b';
for ^ 2**@a -> $n {
my @bits = $n.fmt($fmt).comb;
my $sum = [+] @bits>>.subst(0, -1) Z* @a;
next if $sum < 0;
if $sum < $min_sum {
$min_sum = $sum;
my $flips = @bits.grep(0).elems;
$min_flips = $flips if $flips < $min_flips;
}
}
say "Number of sign flips: $min_flips; min sum: $min_sum";
|