Skip to content

Commit edb9c2c

Browse files
authored
Bugfix: let integer_partitions(0) == [Int[]] (#179)
* Fix `integer_partitions(0)` * test: add length tests for `integer_partitions`
1 parent 4cb1d9e commit edb9c2c

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/partitions.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ function integer_partitions(n::Integer)
646646
if n < 0
647647
throw(DomainError(n, "n must be nonnegative"))
648648
elseif n == 0
649-
return Vector{Int}[]
649+
return Vector{Int}[[]]
650650
elseif n == 1
651651
return Vector{Int}[[1]]
652652
end

test/partitions.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
end
9797

9898
@testset "integer partitions" begin
99-
@test_broken integer_partitions(0) == [[]]
99+
@test integer_partitions(0) == [Int[]]
100100
@test integer_partitions(1) == [[1]]
101101
@test integer_partitions(2) == [[1, 1], [2]]
102102
@test integer_partitions(3) == [[1, 1, 1], [2, 1], [3]]
@@ -113,6 +113,16 @@
113113
# integer_partitions <--> partitions(::Integer)
114114
@test Set(integer_partitions(5)) == Set(partitions(5))
115115

116+
# Partition function p(n): https://oeis.org/A000041
117+
@test length(integer_partitions(0)) == 1
118+
@test length(integer_partitions(1)) == 1
119+
@test length(integer_partitions(2)) == 2
120+
@test length(integer_partitions(3)) == 3
121+
@test length(integer_partitions(4)) == 5
122+
@test length(integer_partitions(5)) == 7
123+
@test length(integer_partitions(40)) == 37338
124+
@test length(integer_partitions(49)) == 173525
125+
116126
@test_throws DomainError integer_partitions(-1)
117127
end
118128

0 commit comments

Comments
 (0)