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.180 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.179 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.178 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.177 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.176 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.175 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.174 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.173 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.172 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.171 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.170 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.169 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.167 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.166 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.165 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.164 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.163 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.162 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.161 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.160 tracks/julia/exercises/grains/example.jl