diff options
| author | Steve Rogerson <steve.git@yewtc.demon.co.uk> | 2020-10-23 12:27:13 +0100 |
|---|---|---|
| committer | Steve Rogerson <steve.git@yewtc.demon.co.uk> | 2020-10-23 12:27:13 +0100 |
| commit | 44c2bbf87ac613a2a442cc4e54d810c20a042ff2 (patch) | |
| tree | 3af39af1f773a9e6b44e91a3852a7553dae7c986 /challenge-083/tyler-wardhaugh/lua/ch-2.lua | |
| parent | ff3c07c3e4409c8d507b3e69496c690b58de524d (diff) | |
| parent | 89421f14095148aefcd254da3d728b6150b22cc3 (diff) | |
| download | perlweeklychallenge-club-44c2bbf87ac613a2a442cc4e54d810c20a042ff2.tar.gz perlweeklychallenge-club-44c2bbf87ac613a2a442cc4e54d810c20a042ff2.tar.bz2 perlweeklychallenge-club-44c2bbf87ac613a2a442cc4e54d810c20a042ff2.zip | |
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
Diffstat (limited to 'challenge-083/tyler-wardhaugh/lua/ch-2.lua')
| -rwxr-xr-x | challenge-083/tyler-wardhaugh/lua/ch-2.lua | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-083/tyler-wardhaugh/lua/ch-2.lua b/challenge-083/tyler-wardhaugh/lua/ch-2.lua new file mode 100755 index 0000000000..bf900a864e --- /dev/null +++ b/challenge-083/tyler-wardhaugh/lua/ch-2.lua @@ -0,0 +1,34 @@ +#!/usr/bin/env lua + +local t2 = {} + +function t2.flip_array(coll) + local min_flips = math.maxinteger + local min_sum = math.maxinteger + local max_bits = 2^#coll - 1 + + local cur_num, cur_sum, is_neg + for bits = 1, max_bits do + cur_num, cur_sum, is_neg = 0, 0, 0 + for i, v in ipairs(coll) do + is_neg = bits & 2^(i-1) == 0 + cur_num = cur_num + (is_neg and 1 or 0) + cur_sum = cur_sum + v * (is_neg and -1 or 1) + end + + if 0 <= cur_sum and cur_sum <= min_sum then + min_flips = math.min(cur_num, min_flips) + min_sum = cur_sum + end + end + + return min_flips +end + + +function t2.run(args) + local minimum = t2.flip_array(args) + print(minimum) +end + +return t2 |
