diff --git a/201705/felixgomez/Reto.hs b/201705/felixgomez/Reto.hs new file mode 100644 index 0000000..57966e4 --- /dev/null +++ b/201705/felixgomez/Reto.hs @@ -0,0 +1,4 @@ +module Reto where +import Data.List +getSubsetsSumZero :: (Eq a, Num a) => [a] -> [[a]] +getSubsetsSumZero = filter ((==0) . sum) . subsequences diff --git a/201705/felixgomez/Tests.hs b/201705/felixgomez/Tests.hs new file mode 100644 index 0000000..e60a6b0 --- /dev/null +++ b/201705/felixgomez/Tests.hs @@ -0,0 +1,30 @@ +import Reto +import Test.HUnit + +dataTest = [ + ([1, 2, 3], False), + ([-5, -3, -1, 2, 4, 6], True), + ([], False), + ([-1, 1], True), + ([-97364, -71561, -69336, 19675, 71561, 97863], True), + ([-53974, -39140, -36561, -23935, -15680, 0], True), + ([-2, 2, 3], True), + ([0], True), + ([-3, 1, 2], True), + ([-98634, -86888, -48841, -40483, 2612, 9225, 17848, 71967, 84319, 88875], True), + ([-83314, -82838, -80120, -63468, -62478, -59378, -56958, -50061, -34791, -32264, -21928, -14988, 23767, 24417, 26403, 26511, 36399, 78055], False), + ([-92953, -91613, -89733, -50673, -16067, -9172, 8852, 30883, 46690, 46968, 56772, 58703, 59150, 78476, 84413, 90106, 94777, 95148], False), + ([-94624, -86776, -85833, -80822, -71902, -54562, -38638, -26483, -20207, -1290, 12414, 12627, 19509, 30894, 32505, 46825, 50321, 69294], False), + ([-83964, -81834, -78386, -70497, -69357, -61867, -49127, -47916, -38361, -35772, -29803, -15343, 6918, 19662, 44614, 66049, 93789, 95405], False), + ([-68808, -58968, -45958, -36013, -32810, -28726, -13488, 3986, 26342, 29245, 30686, 47966, 58352, 68610, 74533, 77939, 80520, 87195], False), + ([-97162, -95761, -94672, -87254, -57207, -22163, -20207, -1753, 11646, 13652, 14572, 30580, 52502, 64282, 74896, 83730, 89889, 92200], True), + ([-93976, -93807, -64604, -59939, -44394, -36454, -34635, -16483, 267, 3245, 8031, 10622, 44815, 46829, 61689, 65756, 69220, 70121], True), + ([-92474, -61685, -55348, -42019, -35902, -7815, -5579, 4490, 14778, 19399, 34202, 46624, 55800, 57719, 60260, 71511, 75665, 82754], True), + ([-85029, -84549, -82646, -80493, -73373, -57478, -56711, -42456, -38923, -29277, -3685, -3164, 26863, 29890, 37187, 46607, 69300, 84808], True), + ([-87565, -71009, -49312, -47554, -27197, 905, 2839, 8657, 14622, 32217, 35567, 38470, 46885, 59236, 64704, 82944, 86902, 90487], True)] + +testSubsetSumZero :: (Eq a, Num a) => ([a], Bool) -> Test +testSubsetSumZero (input, expected) = TestCase $ assertEqual "" (getSubsetsSumZero input /= [[]]) expected + +tests :: Test +tests = TestList (map testSubsetSumZero dataTest) \ No newline at end of file