@@ -2,46 +2,43 @@ using Test
2
2
3
3
include (" knapsack.jl" )
4
4
5
- struct Item
6
- weight
7
- value
8
- end
5
+ Item = NamedTuple{(:weight , :value ), Tuple{Int, Int}}
9
6
10
7
@testset verbose = true " tests" begin
11
8
@testset " no items" begin
12
9
@test maximum_value (100 , []) == 0
13
10
end
14
11
15
12
@testset " one item, too heavy" begin
16
- @test maximum_value (10 , [Item (100 , 1 ),]) == 0
13
+ @test maximum_value (10 , [Item (( 100 , 1 ) ),]) == 0
17
14
end
18
15
19
16
@testset " five items (cannot be greedy by weight)" begin
20
- items = [Item (2 , 5 ), Item (2 , 5 ), Item (2 , 5 ), Item (2 , 5 ), Item (10 , 21 )]
17
+ items = [Item (( 2 , 5 )) , Item (( 2 , 5 )) , Item (( 2 , 5 )) , Item (( 2 , 5 )) , Item (( 10 , 21 ) )]
21
18
@test maximum_value (10 , items) == 21
22
19
end
23
20
24
21
@testset " five items (cannot be greedy by value)" begin
25
- items = [Item (2 , 20 ), Item (2 , 20 ), Item (2 , 20 ), Item (2 , 20 ), Item (10 , 50 )]
22
+ items = [Item (( 2 , 20 )) , Item (( 2 , 20 )) , Item (( 2 , 20 )) , Item (( 2 , 20 )) , Item (( 10 , 50 ) )]
26
23
@test maximum_value (10 , items) == 80
27
24
end
28
25
29
26
@testset " example knapsack" begin
30
- items = [Item (5 , 10 ), Item (4 , 40 ), Item (6 , 30 ), Item (4 , 50 )]
27
+ items = [Item (( 5 , 10 )) , Item (( 4 , 40 )) , Item (( 6 , 30 )) , Item (( 4 , 50 ) )]
31
28
@test maximum_value (10 , items) == 90
32
29
end
33
30
34
31
@testset " 8 items" begin
35
- items = [Item (25 , 350 ), Item (35 , 400 ), Item (45 , 450 ), Item (5 , 20 ),
36
- Item (25 , 70 ), Item (3 , 8 ), Item (2 , 5 ), Item (2 , 5 )]
32
+ items = [Item (( 25 , 350 )) , Item (( 35 , 400 )) , Item (( 45 , 450 )) , Item (( 5 , 20 ) ),
33
+ Item (( 25 , 70 )) , Item (( 3 , 8 )) , Item (( 2 , 5 )) , Item (( 2 , 5 ) )]
37
34
@test maximum_value (104 , items) == 900
38
35
end
39
36
40
37
@testset " 15 items" begin
41
- items = [Item (70 , 135 ), Item (73 , 139 ), Item (77 , 149 ), Item (80 , 150 ),
42
- Item (82 , 156 ), Item (87 , 163 ), Item (90 , 173 ), Item (94 , 184 ),
43
- Item (98 , 192 ), Item (106 , 201 ), Item (110 , 210 ), Item (113 , 214 ),
44
- Item (115 , 221 ), Item (118 , 229 ), Item (120 , 240 )]
38
+ items = [Item (( 70 , 135 )) , Item (( 73 , 139 )) , Item (( 77 , 149 )) , Item (( 80 , 150 ) ),
39
+ Item (( 82 , 156 )) , Item (( 87 , 163 )) , Item (( 90 , 173 )) , Item (( 94 , 184 ) ),
40
+ Item (( 98 , 192 )) , Item (( 106 , 201 )) , Item (( 110 , 210 )) , Item (( 113 , 214 ) ),
41
+ Item (( 115 , 221 )) , Item (( 118 , 229 )) , Item (( 120 , 240 ) )]
45
42
@test maximum_value (750 , items) == 1458
46
43
end
47
44
end
0 commit comments