Skip to content

Commit

Permalink
Merge branch 'main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
golanor authored Jan 30, 2024
2 parents 3f819de + 87962e5 commit abd2c50
Show file tree
Hide file tree
Showing 12 changed files with 249 additions and 17 deletions.
11 changes: 10 additions & 1 deletion config.json
Original file line number Diff line number Diff line change
Expand Up @@ -872,7 +872,16 @@
"uuid": "98b2f717-2630-4f28-a5f2-e51047b59a56",
"practices": [],
"prerequisites": [],
"difficulty": 1
"difficulty": 2
},
{
"slug": "space-age",
"name": "Space Age",
"uuid": "f4bfe822-90cc-4183-8a50-081ff0fdb512",
"practices": [],
"prerequisites": [],
"difficulty": 2

}
]
},
Expand Down
16 changes: 13 additions & 3 deletions exercises/practice/isogram/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# This is an auto-generated file. Regular comments will be removed when this
# file is regenerated. Regenerating will not touch any manually added keys,
# so comments can be added in a "comment" key.
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[a0e97d2d-669e-47c7-8134-518a1e2c4555]
description = "empty string"
Expand Down Expand Up @@ -40,3 +47,6 @@ description = "duplicated character in the middle"

[310ac53d-8932-47bc-bbb4-b2b94f25a83e]
description = "same first and last characters"

[0d0b8644-0a1e-4a31-a432-2b3ee270d847]
description = "word with duplicated character and with two hyphens"
4 changes: 4 additions & 0 deletions exercises/practice/isogram/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,7 @@ include("isogram.jl")
@test !isisogram("angola")
end
end

@testset "word with duplicated character and with two hyphens" begin
@test !isisogram("up-to-date")
end
32 changes: 19 additions & 13 deletions exercises/practice/roman-numerals/.meta/tests.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ description = "6 is VI"
[ff3fb08c-4917-4aab-9f4e-d663491d083d]
description = "9 is IX"

[6d1d82d5-bf3e-48af-9139-87d7165ed509]
description = "16 is XVI"

[2bda64ca-7d28-4c56-b08d-16ce65716cf6]
description = "27 is XXVII"

Expand All @@ -42,6 +45,9 @@ description = "49 is XLIX"
[d5b283d4-455d-4e68-aacf-add6c4b51915]
description = "59 is LIX"

[4465ffd5-34dc-44f3-ada5-56f5007b6dad]
description = "66 is LXVI"

[46b46e5b-24da-4180-bfe2-2ef30b39d0d0]
description = "93 is XCIII"

Expand All @@ -51,32 +57,32 @@ description = "141 is CXLI"
[267f0207-3c55-459a-b81d-67cec7a46ed9]
description = "163 is CLXIII"

[902ad132-0b4d-40e3-8597-ba5ed611dd8d]
description = "166 is CLXVI"

[cdb06885-4485-4d71-8bfb-c9d0f496b404]
description = "402 is CDII"

[6b71841d-13b2-46b4-ba97-dec28133ea80]
description = "575 is DLXXV"

[dacb84b9-ea1c-4a61-acbb-ce6b36674906]
description = "666 is DCLXVI"

[432de891-7fd6-4748-a7f6-156082eeca2f]
description = "911 is CMXI"

[e6de6d24-f668-41c0-88d7-889c0254d173]
description = "1024 is MXXIV"

[efbe1d6a-9f98-4eb5-82bc-72753e3ac328]
description = "1666 is MDCLXVI"

[bb550038-d4eb-4be2-a9ce-f21961ac3bc6]
description = "3000 is MMM"

[6d1d82d5-bf3e-48af-9139-87d7165ed509]
description = "16 is XVI"

[4465ffd5-34dc-44f3-ada5-56f5007b6dad]
description = "66 is LXVI"

[902ad132-0b4d-40e3-8597-ba5ed611dd8d]
description = "166 is CLXVI"
[3bc4b41c-c2e6-49d9-9142-420691504336]
description = "3001 is MMMI"

[dacb84b9-ea1c-4a61-acbb-ce6b36674906]
description = "666 is DCLXVI"

[efbe1d6a-9f98-4eb5-82bc-72753e3ac328]
description = "1666 is MDCLXVI"
[4e18e96b-5fbb-43df-a91b-9cb511fe0856]
description = "3999 is MMMCMXCIX"
2 changes: 2 additions & 0 deletions exercises/practice/roman-numerals/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ samples = Dict(
1991 => "MCMXCI",
2017 => "MMXVII",
3000 => "MMM",
3001 => "MMMI",
3999 => "MMMCMXCIX",
)

@testset "convert $(sample[1]) to roman numeral" for sample in samples
Expand Down
25 changes: 25 additions & 0 deletions exercises/practice/space-age/.docs/instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Instructions

Given an age in seconds, calculate how old someone would be on:

- Mercury: orbital period 0.2408467 Earth years
- Venus: orbital period 0.61519726 Earth years
- Earth: orbital period 1.0 Earth years, 365.25 Earth days, or 31557600 seconds
- Mars: orbital period 1.8808158 Earth years
- Jupiter: orbital period 11.862615 Earth years
- Saturn: orbital period 29.447498 Earth years
- Uranus: orbital period 84.016846 Earth years
- Neptune: orbital period 164.79132 Earth years

So if you were told someone were 1,000,000,000 seconds old, you should
be able to say that they're 31.69 Earth-years old.

If you're wondering why Pluto didn't make the cut, go watch [this YouTube video][pluto-video].

Note: The actual length of one complete orbit of the Earth around the sun is closer to 365.256 days (1 sidereal year).
The Gregorian calendar has, on average, 365.2425 days.
While not entirely accurate, 365.25 is the value used in this exercise.
See [Year on Wikipedia][year] for more ways to measure a year.

[pluto-video]: https://www.youtube.com/watch?v=Z_2gbGXzFbs
[year]: https://en.wikipedia.org/wiki/Year#Summary
19 changes: 19 additions & 0 deletions exercises/practice/space-age/.meta/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"authors": [
"BNAndras"
],
"files": {
"solution": [
"space-age.jl"
],
"test": [
"runtests.jl"
],
"example": [
".meta/example.jl"
]
},
"blurb": "Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.",
"source": "Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial.",
"source_url": "https://pine.fm/LearnToProgram/?Chapter=01"
}
31 changes: 31 additions & 0 deletions exercises/practice/space-age/.meta/example.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
function onEarth(seconds::Integer)
seconds / 31557600
end

function onMercury(seconds::Integer)
onEarth(seconds) / 0.2408467
end

function onVenus(seconds::Integer)
onEarth(seconds) / 0.61519726
end

function onMars(seconds::Integer)
onEarth(seconds) / 1.8808158
end

function onJupiter(seconds::Integer)
onEarth(seconds) / 11.862615
end

function onSaturn(seconds::Integer)
onEarth(seconds) / 29.447498
end

function onUranus(seconds::Integer)
onEarth(seconds) / 84.016846
end

function onNeptune(seconds::Integer)
onEarth(seconds) / 164.79132
end
38 changes: 38 additions & 0 deletions exercises/practice/space-age/.meta/tests.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# This is an auto-generated file.
#
# Regenerating this file via `configlet sync` will:
# - Recreate every `description` key/value pair
# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications
# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion)
# - Preserve any other key/value pair
#
# As user-added comments (using the # character) will be removed when this file
# is regenerated, comments can be added via a `comment` key.

[84f609af-5a91-4d68-90a3-9e32d8a5cd34]
description = "age on Earth"

[ca20c4e9-6054-458c-9312-79679ffab40b]
description = "age on Mercury"

[502c6529-fd1b-41d3-8fab-65e03082b024]
description = "age on Venus"

[9ceadf5e-a0d5-4388-9d40-2c459227ceb8]
description = "age on Mars"

[42927dc3-fe5e-4f76-a5b5-f737fc19bcde]
description = "age on Jupiter"

[8469b332-7837-4ada-b27c-00ee043ebcad]
description = "age on Saturn"

[999354c1-76f8-4bb5-a672-f317b6436743]
description = "age on Uranus"

[80096d30-a0d4-4449-903e-a381178355d8]
description = "age on Neptune"

[57b96e2a-1178-40b7-b34d-f3c9c34e4bf4]
description = "invalid planet causes error"
include = false
53 changes: 53 additions & 0 deletions exercises/practice/space-age/runtests.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using Test

include("space-age.jl")

@testset verbose = true "Space Age" begin
@testset "age on Earth" begin
result = onEarth(1000000000)
expected = 31.60
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Mercury" begin
result = onMercury(2134835688)
expected = 280.88
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Venus" begin
result = onVenus(189839836)
expected = 9.78
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Mars" begin
result = onMars(2129871239)
expected = 35.88
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Jupiter" begin
result = onJupiter(901876382)
expected = 2.41
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Saturn" begin
result = onSaturn(2000000000)
expected = 2.15
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Uranus" begin
result = onUranus(1210123456)
expected = 0.46
@test isapprox(result, expected; rtol=0.01)
end

@testset "age on Neptune" begin
result = onNeptune(1821023456)
expected = 0.35
@test isapprox(result, expected; rtol=0.01)
end
end
31 changes: 31 additions & 0 deletions exercises/practice/space-age/space-age.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
function onEarth(seconds)

end

function onMercury(seconds)

end

function onVenus(seconds)

end

function onMars(seconds)

end

function onJupiter(seconds)

end

function onSaturn(seconds)

end

function onUranus(seconds)

end

function onNeptune(seconds)

end
4 changes: 4 additions & 0 deletions exercises/shared/.docs/help.md
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
# Help

To get help if you're having trouble, we recommend that you submit your code and request mentoring :)

If you don't want to do that for whatever reason, then you can find the wider Julia community channels [here](https://julialang.org/community/).

0 comments on commit abd2c50

Please sign in to comment.