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.159 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.158 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.157 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.156 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.155 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.154 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.153 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.152 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.151 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.150 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.149 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.148 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.147 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.146 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.145 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.144 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.143 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.142 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.141 tracks/julia/exercises/grains/example.jl
trackler-2.2.1.140 tracks/julia/exercises/grains/example.jl