Sha256: c0783c727fe6937228db5bad9a583f979a27619f0b211badce48d360bb658087

Contents?: true

Size: 778 Bytes

Versions: 135

Compression:

Stored size: 778 Bytes

Contents

"""Calculate the number of grains on square `square`."""
function on_square(square)
    check_square_input(square)
    2 ^ (square - 1)
end

"""Calculate the total number of grains after square `square`."""
function total_after(square)
    check_square_input(square)
    sum(map(on_square, 1:square))
end

"""Validate an arbitrary square."""
function check_square_input(square)
    square == 0 && throw(DomainError(square, "Square input of zero is invalid."))
    square <  0 && throw(DomainError(square, "Negative square input is invalid."))
    square > 64 && throw(DomainError(square, "Square input greater than 64 is invalid."))
end

if VERSION < v"0.7"  # backwards compatibility
    Base.DomainError(val) = DomainError()
    Base.DomainError(val, msg) = DomainError()
end

Version data entries

135 entries across 135 versions & 1 rubygems

Version Path
trackler-2.2.1.139 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.138 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.137 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.136 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.135 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.134 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.133 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.132 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.131 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.130 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.129 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.128 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.127 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.126 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.125 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.124 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.123 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.122 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.121 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.120 tracks/julia/exercises/grains/example.jl