Skip to content

Commit

Permalink
Merge pull request JuliaLang#24 from andrej-makarov-skrt/ex-trinary
Browse files Browse the repository at this point in the history
Add exercise: trinary
  • Loading branch information
SaschaMann committed Jan 31, 2017
2 parents 119aa35 + 6a24e91 commit 5d93fc2
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 0 deletions.
10 changes: 10 additions & 0 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,16 @@
"unicode",
"control-flow (if-else statements)"
]
},
{
"slug": "trinary",
"difficulty": 2,
"topics": [
"arrays",
"strings",
"integers",
"mathematics"
]
}
],
"deprecated": [
Expand Down
4 changes: 4 additions & 0 deletions exercises/trinary/example.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
function trinary_to_decimal(str::AbstractString)
typeof(match(r"^[0-2]+$", str)) == Void && return 0
mapreduce(i->(i[2]-'0')*3^i[1], +, zip(0:length(str), reverse(str)))
end
47 changes: 47 additions & 0 deletions exercises/trinary/runtests.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using Base.Test

include("trinary.jl")

@testset "trinary 1 is decimal 1" begin
@test trinary_to_decimal("1") == 1
end

@testset "trinary 2 is decimal 2" begin
@test trinary_to_decimal("2") == 2
end

@testset "trinary 10 is decimal 3" begin
@test trinary_to_decimal("10") == 3
end

@testset "trinary 11 is decimal 4" begin
@test trinary_to_decimal("11") == 4
end

@testset "trinary 100 is decimal 9" begin
@test trinary_to_decimal("100") == 9
end

@testset "trinary 112 is decimal 14" begin
@test trinary_to_decimal("112") == 14
end

@testset "trinary 222 is decimal 26" begin
@test trinary_to_decimal("222") == 26
end

@testset "trinary 1122000120 is decimal 32091" begin
@test trinary_to_decimal("1122000120") == 32091
end

@testset "invalid trinary digits returns 0" begin
@test trinary_to_decimal("1234") == 0
end

@testset "invalid word as input returns 0" begin
@test trinary_to_decimal("carrot") == 0
end

@testset "invalid numbers with letters as input returns 0" begin
@test trinary_to_decimal("0a1b2c") == 0
end
3 changes: 3 additions & 0 deletions exercises/trinary/trinary.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
function trinary_to_decimal(str::AbstractString)

end

0 comments on commit 5d93fc2

Please sign in to comment.