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.78 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.77 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.76 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.75 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.74 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.73 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.72 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.71 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.70 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.69 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.68 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.67 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.66 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.65 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.64 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.63 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.62 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.61 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.60 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.59 tracks/julia/exercises/grains/example.jl