Skip to content

Commit

Permalink
Add variations_with_repetitions()
Browse files Browse the repository at this point in the history
  • Loading branch information
Samayel committed Jul 2, 2015
1 parent 39f5b94 commit 989919b
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 10 deletions.
14 changes: 8 additions & 6 deletions src/Math/combinatorics.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,25 @@ VERSION < v"0.4-" && @reexport using Combinatorics

export
permutations_with_repetitions,
# variations, variations_with_repetitions,
variations, variations_with_repetitions,
combinations_with_repetitions


# Base.permutations()
# permutations{T}(a::AbstractArray{T,1}) = Base.permutations(a)

permutations_with_repetitions{T}(a::AbstractArray{T,1}) =
variations_with_repetitions(a, length(a))


# http://www.aconnect.de/friends/editions/computer/combinatoricode_e.html
#variations{T}(a::AbstractArray{T,1}, k::Integer) = nothing
variations{T}(::AbstractArray{T,1}, ::Integer) = nothing

# product(repeated(a, k)...)
#variations_with_repetitions{T}(a::AbstractArray{T,1}, k::Integer) = nothing
variations_with_repetitions{T}(a::AbstractArray{T,1}, k::Integer) =
@pipe product(repeated(a, k)...) |> # cartesian product as tuples
tmap(t -> [t[end:-1:1]...], Array{T,1}, _) # convert tuples to arrays

# Base.combinations()

# combinations{T}(a::AbstractArray{T,1}, k::Integer) = Base.combinations(a, k)

combinations_with_repetitions{T}(a::AbstractArray{T,1}, k::Integer) =
multicombinations(a, k)
3 changes: 3 additions & 0 deletions src/Math/math.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
@reexport module Math

using Brainstorm: tmap
using Iterators: product, repeated
using Pipe.@pipe
using Reexport.@reexport

# @reexport using DecFP
Expand Down
3 changes: 3 additions & 0 deletions src/lint.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ end
@lintpragma("Ignore undefined module DataStructures.SortedDict")
@lintpragma("Ignore undefined module Iterators.drop")
@lintpragma("Ignore undefined module Iterators.imap")
@lintpragma("Ignore undefined module Iterators.product")
@lintpragma("Ignore undefined module Iterators.repeated")
@lintpragma("Ignore undefined module Iterators.take")
@lintpragma("Ignore undefined module Lint.lintpkg")
@lintpragma("Ignore undefined module TaylorSeries.Taylor1")
Expand All @@ -14,6 +16,7 @@ end

@lintpragma("Ignore undefined module Brainstorm.dropwhile")
@lintpragma("Ignore undefined module Brainstorm.takewhile")
@lintpragma("Ignore undefined module Brainstorm.tmap")
@lintpragma("Ignore undefined module Brainstorm.Math.checked_add")
@lintpragma("Ignore undefined module Brainstorm.Math.checked_sub")
@lintpragma("Ignore undefined module Brainstorm.@anon")
Expand Down
4 changes: 0 additions & 4 deletions test/Math/combinatorics.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ function test_combinatorics_permutations()
end

function test_combinatorics_permutations_with_repetitions()
#=
@test collect(permutations_with_repetitions(["a", "b", "c"])) == Array[
["a", "a", "a"],
["a", "a", "b"],
Expand Down Expand Up @@ -44,7 +43,6 @@ function test_combinatorics_permutations_with_repetitions()
]
@test length(permutations_with_repetitions(["a", "b", "c"])) == 27
@test eltype(permutations_with_repetitions(["a", "b", "c"])) == Array{ASCIIString,1}
=#
end

function test_combinatorics_variations()
Expand All @@ -69,7 +67,6 @@ function test_combinatorics_variations()
end

function test_combinatorics_variations_with_repetitions()
#=
@test collect(variations_with_repetitions(["a", "b", "c", "d"], 2)) == Array[
["a", "a"],
["a", "b"],
Expand All @@ -90,7 +87,6 @@ function test_combinatorics_variations_with_repetitions()
]
@test length(variations_with_repetitions(["a", "b", "c", "d"], 2)) == 16
@test eltype(variations_with_repetitions(["a", "b", "c", "d"], 2)) == Array{ASCIIString,1}
=#
end

function test_combinatorics_combinations()
Expand Down

0 comments on commit 989919b

Please sign in to comment.