From 8c6601995602339445f252c37b806da5fba86d7a Mon Sep 17 00:00:00 2001 From: Ruidy Date: Wed, 2 Feb 2022 08:33:47 -0400 Subject: [PATCH] space age --- binary-search/.exercism/config.json | 31 ++++++++ binary-search/.exercism/metadata.json | 1 + binary-search/.formatter.exs | 4 + binary-search/.gitignore | 24 ++++++ binary-search/HELP.md | 75 ++++++++++++++++++ binary-search/README.md | 63 +++++++++++++++ binary-search/lib/binary_search.ex | 35 ++++++++ binary-search/mix.exs | 28 +++++++ binary-search/test/binary_search_test.exs | 65 +++++++++++++++ binary-search/test/test_helper.exs | 2 + resistor-color-duo/.exercism/config.json | 18 +++++ resistor-color-duo/.formatter.exs | 4 + resistor-color-duo/HELP.md | 75 ++++++++++++++++++ resistor-color-duo/README.md | 48 +++++++++++ .../.mix/.mix_test_failures | Bin 0 -> 10 bytes .../.mix/compile.app_tracer | Bin 0 -> 39552 bytes .../resistor_color_duo/.mix/compile.elixir | Bin 0 -> 244 bytes .../.mix/compile.elixir_scm | Bin 0 -> 45 bytes .../resistor_color_duo/.mix/compile.protocols | Bin 0 -> 5 bytes .../consolidated/Elixir.Collectable.beam | Bin 0 -> 5216 bytes .../consolidated/Elixir.Enumerable.beam | Bin 0 -> 7912 bytes .../consolidated/Elixir.IEx.Info.beam | Bin 0 -> 4624 bytes .../consolidated/Elixir.Inspect.beam | Bin 0 -> 5964 bytes .../consolidated/Elixir.List.Chars.beam | Bin 0 -> 4096 bytes .../consolidated/Elixir.String.Chars.beam | Bin 0 -> 4460 bytes .../ebin/Elixir.ResistorColorDuo.beam | Bin 0 -> 2020 bytes .../ebin/resistor_color_duo.app | 6 ++ resistor-color-duo/lib/resistor_color_duo.ex | 26 ++++++ resistor-color-duo/mix.exs | 28 +++++++ .../test/resistor_color_duo_test.exs | 60 ++++++++++++++ resistor-color-duo/test/test_helper.exs | 2 + resistor-color/lib/resistor_color.ex | 1 + space-age/.exercism/config.json | 36 +++++++++ space-age/.exercism/metadata.json | 1 + space-age/.formatter.exs | 4 + space-age/.gitignore | 24 ++++++ space-age/HELP.md | 75 ++++++++++++++++++ space-age/README.md | 51 ++++++++++++ space-age/lib/space_age.ex | 40 ++++++++++ space-age/mix.exs | 28 +++++++ space-age/test/space_age_test.exs | 70 ++++++++++++++++ space-age/test/test_helper.exs | 2 + 42 files changed, 927 insertions(+) create mode 100644 binary-search/.exercism/config.json create mode 100644 binary-search/.exercism/metadata.json create mode 100644 binary-search/.formatter.exs create mode 100644 binary-search/.gitignore create mode 100644 binary-search/HELP.md create mode 100644 binary-search/README.md create mode 100644 binary-search/lib/binary_search.ex create mode 100644 binary-search/mix.exs create mode 100644 binary-search/test/binary_search_test.exs create mode 100644 binary-search/test/test_helper.exs create mode 100644 resistor-color-duo/.exercism/config.json create mode 100644 resistor-color-duo/.formatter.exs create mode 100644 resistor-color-duo/HELP.md create mode 100644 resistor-color-duo/README.md create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/.mix_test_failures create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.app_tracer create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.elixir create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.elixir_scm create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.protocols create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.Collectable.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.Enumerable.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.IEx.Info.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.Inspect.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.List.Chars.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.String.Chars.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/Elixir.ResistorColorDuo.beam create mode 100644 resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/resistor_color_duo.app create mode 100644 resistor-color-duo/lib/resistor_color_duo.ex create mode 100644 resistor-color-duo/mix.exs create mode 100644 resistor-color-duo/test/resistor_color_duo_test.exs create mode 100644 resistor-color-duo/test/test_helper.exs create mode 100644 space-age/.exercism/config.json create mode 100644 space-age/.exercism/metadata.json create mode 100644 space-age/.formatter.exs create mode 100644 space-age/.gitignore create mode 100644 space-age/HELP.md create mode 100644 space-age/README.md create mode 100644 space-age/lib/space_age.ex create mode 100644 space-age/mix.exs create mode 100644 space-age/test/space_age_test.exs create mode 100644 space-age/test/test_helper.exs diff --git a/binary-search/.exercism/config.json b/binary-search/.exercism/config.json new file mode 100644 index 0000000..2075355 --- /dev/null +++ b/binary-search/.exercism/config.json @@ -0,0 +1,31 @@ +{ + "blurb": "Implement a binary search algorithm.", + "authors": [ + "bernardoamc" + ], + "contributors": [ + "angelikatyborska", + "Cohen-Carlisle", + "devonestes", + "lpil", + "martinsvalin", + "neenjaw", + "parkerl", + "screamingjungle", + "sotojuan", + "waiting-for-dev" + ], + "files": { + "solution": [ + "lib/binary_search.ex" + ], + "test": [ + "test/binary_search_test.exs" + ], + "example": [ + ".meta/example.ex" + ] + }, + "source": "Wikipedia", + "source_url": "http://en.wikipedia.org/wiki/Binary_search_algorithm" +} diff --git a/binary-search/.exercism/metadata.json b/binary-search/.exercism/metadata.json new file mode 100644 index 0000000..96b9497 --- /dev/null +++ b/binary-search/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"elixir","exercise":"binary-search","id":"5e40f287d55a4b898fda154d02e346fe","url":"https://exercism.org/tracks/elixir/exercises/binary-search","handle":"rjNemo","is_requester":true,"auto_approve":false} \ No newline at end of file diff --git a/binary-search/.formatter.exs b/binary-search/.formatter.exs new file mode 100644 index 0000000..d2cda26 --- /dev/null +++ b/binary-search/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/binary-search/.gitignore b/binary-search/.gitignore new file mode 100644 index 0000000..75ae0f4 --- /dev/null +++ b/binary-search/.gitignore @@ -0,0 +1,24 @@ +# The directory Mix will write compiled artifacts to. +/_build/ + +# If you run "mix test --cover", coverage assets end up here. +/cover/ + +# The directory Mix downloads your dependencies sources to. +/deps/ + +# Where third-party dependencies like ExDoc output generated docs. +/doc/ + +# Ignore .fetch files in case you like to edit your project deps locally. +/.fetch + +# If the VM crashes, it generates a dump, let's ignore it too. +erl_crash.dump + +# Also ignore archive artifacts (built via "mix archive.build"). +*.ez + +# Ignore package tarball (built via "mix hex.build"). +binary_search-*.tar + diff --git a/binary-search/HELP.md b/binary-search/HELP.md new file mode 100644 index 0000000..6ce656f --- /dev/null +++ b/binary-search/HELP.md @@ -0,0 +1,75 @@ +# Help + +## Running the tests + +From the terminal, change to the base directory of the exercise then execute the tests with: + +```bashv +$ mix test +``` + +This will execute the test file found in the `test` subfolder -- a file ending in `_test.exs` + +Documentation: + +* [`mix test` - Elixir's test execution tool](https://hexdocs.pm/mix/Mix.Tasks.Test.html) +* [`ExUnit` - Elixir's unit test library](https://hexdocs.pm/ex_unit/ExUnit.html) + +## Pending tests + +In test suites of practice exercises, all but the first test have been tagged to be skipped. + +Once you get a test passing, you can unskip the next one by commenting out the relevant `@tag :pending` with a `#` symbol. + +For example: + +```elixir +# @tag :pending +test "shouting" do + assert Bob.hey("WATCH OUT!") == "Whoa, chill out!" +end +``` + +If you wish to run all tests at once, you can include all skipped test by using the `--include` flag on the `mix test` command: + +```bash +$ mix test --include pending +``` + +Or, you can enable all the tests by commenting out the `ExUnit.configure` line in the file `test/test_helper.exs`. + +```elixir +# ExUnit.configure(exclude: :pending, trace: true) +``` + +## Useful `mix test` options + +* `test/.exs:LINENUM` - runs only a single test, the test from `.exs` whose definition is on line `LINENUM` +* `--failed` - runs only tests that failed the last time they ran +* `--max-failures` - the suite stops evaluating tests when this number of test failures +is reached +* `--seed 0` - disables randomization so the tests in a single file will always be ran +in the same order they were defined in + +## Submitting your solution + +You can submit your solution using the `exercism submit lib/binary_search.ex` command. +This command will upload your solution to the Exercism website and print the solution page's URL. + +It's possible to submit an incomplete solution which allows you to: + +- See how others have completed the exercise +- Request help from a mentor + +## Need to get help? + +If you'd like help solving the exercise, check the following pages: + +- The [Elixir track's documentation](https://exercism.org/docs/tracks/elixir) +- [Exercism's support channel on gitter](https://gitter.im/exercism/support) +- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs) + +Should those resources not suffice, you could submit your (incomplete) solution to request mentoring. + +If you're stuck on something, it may help to look at some of the [available resources](https://exercism.org/docs/tracks/elixir/resources) out there where answers might be found. +If you can't find what you're looking for in the documentation, feel free to ask help in the Exercism's BEAM [gitter channel](https://gitter.im/exercism/xerlang). \ No newline at end of file diff --git a/binary-search/README.md b/binary-search/README.md new file mode 100644 index 0000000..9609c4b --- /dev/null +++ b/binary-search/README.md @@ -0,0 +1,63 @@ +# Binary Search + +Welcome to Binary Search on Exercism's Elixir Track. +If you need help running the tests or submitting your code, check out `HELP.md`. + +## Instructions + +Implement a binary search algorithm. + +Searching a sorted collection is a common task. A dictionary is a sorted +list of word definitions. Given a word, one can find its definition. A +telephone book is a sorted list of people's names, addresses, and +telephone numbers. Knowing someone's name allows one to quickly find +their telephone number and address. + +If the list to be searched contains more than a few items (a dozen, say) +a binary search will require far fewer comparisons than a linear search, +but it imposes the requirement that the list be sorted. + +In computer science, a binary search or half-interval search algorithm +finds the position of a specified input value (the search "key") within +an array sorted by key value. + +In each step, the algorithm compares the search key value with the key +value of the middle element of the array. + +If the keys match, then a matching element has been found and its index, +or position, is returned. + +Otherwise, if the search key is less than the middle element's key, then +the algorithm repeats its action on the sub-array to the left of the +middle element or, if the search key is greater, on the sub-array to the +right. + +If the remaining array to be searched is empty, then the key cannot be +found in the array and a special "not found" indication is returned. + +A binary search halves the number of items to check with each iteration, +so locating an item (or determining its absence) takes logarithmic time. +A binary search is a dichotomic divide and conquer search algorithm. + +## Source + +### Created by + +- @bernardoamc + +### Contributed to by + +- @angelikatyborska +- @Cohen-Carlisle +- @devonestes +- @lpil +- @martinsvalin +- @neenjaw +- @parkerl +- @screamingjungle +- @sotojuan +- @waiting-for-dev + +### Based on + +Wikipedia - http://en.wikipedia.org/wiki/Binary_search_algorithm \ No newline at end of file diff --git a/binary-search/lib/binary_search.ex b/binary-search/lib/binary_search.ex new file mode 100644 index 0000000..b08d072 --- /dev/null +++ b/binary-search/lib/binary_search.ex @@ -0,0 +1,35 @@ +defmodule BinarySearch do + @doc """ + Searches for a key in the tuple using the binary search algorithm. + It returns :not_found if the key is not in the tuple. + Otherwise returns {:ok, index}. + + ## Examples + + iex> BinarySearch.search({}, 2) + :not_found + + iex> BinarySearch.search({1, 3, 5}, 2) + :not_found + + iex> BinarySearch.search({1, 3, 5}, 5) + {:ok, 2} + + """ + + @spec search(tuple, integer) :: {:ok, integer} | :not_found + def search({key}, key), do: {:ok, 0} + + def search(numbers, key) do + count = tuple_size(numbers) + mid = div(count, 2) + {left, right} = numbers |> Tuple.to_list() |> Enum.split(mid) + + cond do + key > List.last(left) -> search(right, key) + key < hd(right) -> search(left, key) + end + end + + # def search(_, _), do: :not_found +end diff --git a/binary-search/mix.exs b/binary-search/mix.exs new file mode 100644 index 0000000..36d00d4 --- /dev/null +++ b/binary-search/mix.exs @@ -0,0 +1,28 @@ +defmodule BinarySearch.MixProject do + use Mix.Project + + def project do + [ + app: :binary_search, + version: "0.1.0", + # elixir: "~> 1.8", + start_permanent: Mix.env() == :prod, + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + # {:dep_from_hexpm, "~> 0.3.0"}, + # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} + ] + end +end diff --git a/binary-search/test/binary_search_test.exs b/binary-search/test/binary_search_test.exs new file mode 100644 index 0000000..334c109 --- /dev/null +++ b/binary-search/test/binary_search_test.exs @@ -0,0 +1,65 @@ +defmodule BinarySearchTest do + use ExUnit.Case + + test "finds a value in a tuple with one element" do + assert BinarySearch.search({6}, 6) == {:ok, 0} + assert BinarySearch.search({3}, 3) == {:ok, 0} + end + + test "finds a value in the middle of a tuple" do + assert BinarySearch.search({1, 2, 3, 4, 5, 6}, 4) == {:ok, 2} + assert BinarySearch.search({1, 3, 4, 6, 8, 9, 11}, 6) == {:ok, 3} + end + + test "finds a value at the beginning of a tuple" do + assert BinarySearch.search({1, 2, 4, 5, 6}, 1) == {:ok, 0} + assert BinarySearch.search({1, 3, 4, 5, 8, 9, 11}, 1) == {:ok, 0} + end + + @tag :pending + test "finds a value at the end of a tuple" do + assert BinarySearch.search({1, 2, 4, 5, 6}, 6) == {:ok, 4} + assert BinarySearch.search({1, 3, 4, 5, 8, 9, 11}, 11) == {:ok, 6} + end + + @tag :pending + test "finds a value in a tuple of odd length" do + tuple = {1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 634} + assert BinarySearch.search(tuple, 144) == {:ok, 9} + end + + @tag :pending + test "finds a value in a tuple of even length" do + tuple = {1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377} + assert BinarySearch.search(tuple, 21) == {:ok, 5} + assert BinarySearch.search(tuple, 34) == {:ok, 6} + end + + @tag :pending + test "identifies that a value is not included in the tuple" do + assert BinarySearch.search({2, 4, 6}, 3) == :not_found + assert BinarySearch.search({1, 3, 4, 6, 8, 9, 11}, 7) == :not_found + end + + @tag :pending + test "a value smaller than the tuple's smallest value is not found" do + assert BinarySearch.search({2, 4, 6}, 1) == :not_found + assert BinarySearch.search({1, 3, 4, 6, 8, 9, 11}, 0) == :not_found + end + + @tag :pending + test "a value larger than the tuple's largest value is not found" do + assert BinarySearch.search({2, 4, 6}, 9) == :not_found + assert BinarySearch.search({1, 3, 4, 6, 8, 9, 11}, 13) == :not_found + end + + @tag :pending + test "nothing is found in an empty tuple" do + assert BinarySearch.search({}, 1) == :not_found + end + + @tag :pending + test "nothing is found when the left and right bounds cross" do + assert BinarySearch.search({1, 2}, 0) == :not_found + end +end diff --git a/binary-search/test/test_helper.exs b/binary-search/test/test_helper.exs new file mode 100644 index 0000000..35fc5bf --- /dev/null +++ b/binary-search/test/test_helper.exs @@ -0,0 +1,2 @@ +ExUnit.start() +ExUnit.configure(exclude: :pending, trace: true) diff --git a/resistor-color-duo/.exercism/config.json b/resistor-color-duo/.exercism/config.json new file mode 100644 index 0000000..24b69a7 --- /dev/null +++ b/resistor-color-duo/.exercism/config.json @@ -0,0 +1,18 @@ +{ + "authors": ["jiegillet"], + "contributors": [], + "files": { + "example": [ + ".meta/example.ex" + ], + "solution": [ + "lib/resistor_color_duo.ex" + ], + "test": [ + "test/resistor_color_duo_test.exs" + ] + }, + "blurb": "Convert color codes, as used on resistors, to a numeric value.", + "source": "Maud de Vries, Erik Schierboom", + "source_url": "https://github.com/exercism/problem-specifications/issues/1464" +} diff --git a/resistor-color-duo/.formatter.exs b/resistor-color-duo/.formatter.exs new file mode 100644 index 0000000..d2cda26 --- /dev/null +++ b/resistor-color-duo/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/resistor-color-duo/HELP.md b/resistor-color-duo/HELP.md new file mode 100644 index 0000000..9bcc43a --- /dev/null +++ b/resistor-color-duo/HELP.md @@ -0,0 +1,75 @@ +# Help + +## Running the tests + +From the terminal, change to the base directory of the exercise then execute the tests with: + +```bash +$ mix test +``` + +This will execute the test file found in the `test` subfolder -- a file ending in `_test.exs` + +Documentation: + +* [`mix test` - Elixir's test execution tool](https://hexdocs.pm/mix/Mix.Tasks.Test.html) +* [`ExUnit` - Elixir's unit test library](https://hexdocs.pm/ex_unit/ExUnit.html) + +## Pending tests + +In test suites of practice exercises, all but the first test have been tagged to be skipped. + +Once you get a test passing, you can unskip the next one by commenting out the relevant `@tag :pending` with a `#` symbol. + +For example: + +```elixir +# @tag :pending +test "shouting" do + assert Bob.hey("WATCH OUT!") == "Whoa, chill out!" +end +``` + +If you wish to run all tests at once, you can include all skipped test by using the `--include` flag on the `mix test` command: + +```bash +$ mix test --include pending +``` + +Or, you can enable all the tests by commenting out the `ExUnit.configure` line in the file `test/test_helper.exs`. + +```elixir +# ExUnit.configure(exclude: :pending, trace: true) +``` + +## Useful `mix test` options + +* `test/.exs:LINENUM` - runs only a single test, the test from `.exs` whose definition is on line `LINENUM` +* `--failed` - runs only tests that failed the last time they ran +* `--max-failures` - the suite stops evaluating tests when this number of test failures +is reached +* `--seed 0` - disables randomization so the tests in a single file will always be ran +in the same order they were defined in + +## Submitting your solution + +You can submit your solution using the `exercism submit lib/resistor_color_duo.ex` command. +This command will upload your solution to the Exercism website and print the solution page's URL. + +It's possible to submit an incomplete solution which allows you to: + +- See how others have completed the exercise +- Request help from a mentor + +## Need to get help? + +If you'd like help solving the exercise, check the following pages: + +- The [Elixir track's documentation](https://exercism.org/docs/tracks/elixir) +- [Exercism's support channel on gitter](https://gitter.im/exercism/support) +- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs) + +Should those resources not suffice, you could submit your (incomplete) solution to request mentoring. + +If you're stuck on something, it may help to look at some of the [available resources](https://exercism.org/docs/tracks/elixir/resources) out there where answers might be found. +If you can't find what you're looking for in the documentation, feel free to ask help in the Exercism's BEAM [gitter channel](https://gitter.im/exercism/xerlang). \ No newline at end of file diff --git a/resistor-color-duo/README.md b/resistor-color-duo/README.md new file mode 100644 index 0000000..abedcc4 --- /dev/null +++ b/resistor-color-duo/README.md @@ -0,0 +1,48 @@ +# Resistor Color Duo + +Welcome to Resistor Color Duo on Exercism's Elixir Track. +If you need help running the tests or submitting your code, check out `HELP.md`. + +## Instructions + +If you want to build something using a Raspberry Pi, you'll probably use _resistors_. +For this exercise, you need to know two things about them: + +* Each resistor has a resistance value. +* Resistors are small - so small in fact that if you printed the resistance value on them, it would be hard to read. + +To get around this problem, manufacturers print color-coded bands onto the resistors to denote their resistance values. +Each band has a position and a numeric value. + +The first 2 bands of a resistor have a simple encoding scheme: each color maps to a single number. +For example, if they printed a brown band (value 1) followed by a green band (value 5), it would translate to the number 15. + +In this exercise you are going to create a helpful program so that you don't have to remember the values of the bands. +The program will take color names as input and output a two digit number, even if the input is more than two colors! + +The band colors are encoded as follows: + +* Black: 0 +* Brown: 1 +* Red: 2 +* Orange: 3 +* Yellow: 4 +* Green: 5 +* Blue: 6 +* Violet: 7 +* Grey: 8 +* White: 9 + +From the example above: +brown-green should return 15 +brown-green-violet should return 15 too, ignoring the third color. + +## Source + +### Created by + +- @jiegillet + +### Based on + +Maud de Vries, Erik Schierboom - https://github.com/exercism/problem-specifications/issues/1464 \ No newline at end of file diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/.mix_test_failures b/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/.mix_test_failures new file mode 100644 index 0000000000000000000000000000000000000000..002e9d79caf0621ef4cb8f933fa9a484a64e60fc GIT binary patch literal 10 PcmZq9U`k{xVE_UE4bcI_ literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.app_tracer b/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.app_tracer new file mode 100644 index 0000000000000000000000000000000000000000..f139eed13db591e655bc5b607060ef2e01c2adfb GIT binary patch literal 39552 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 literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.elixir b/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.elixir new file mode 100644 index 0000000000000000000000000000000000000000..9a97ce3580039f92c27b2616d27ba00492f8d23d GIT binary patch literal 244 zcmV@yQ@{@hPSGdZ`szAZY=`fQ3_)-rt$p>~$iI zg)4q<3Il6eVoq^t7Q|9+pozu#rA5i9_zg<}Dn0@>(CAw87rkB9*UsOJTEiRE^#NoK za|#15)WyC~ABaKu-l;`-sX2Nfl?AEA1*yphg%F7>usc|Qu1GD)Nz6+}$Oo4cWrFxz uFoP2dQW&_Q9M`m6cTjRKSpx!IT9LFlL}1fjR+axOkEi9dHW( literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.elixir_scm b/resistor-color-duo/_build/test/lib/resistor_color_duo/.mix/compile.elixir_scm new file mode 100644 index 0000000000000000000000000000000000000000..e0d53117af606a01c62f1cb48bdc1a52de6f063e GIT binary patch literal 45 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 literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.Enumerable.beam b/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.Enumerable.beam new file mode 100644 index 0000000000000000000000000000000000000000..d6188b61cf6d28dfcd6833fed45cc520aad5dc2a GIT binary patch literal 7912 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 literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.IEx.Info.beam b/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.IEx.Info.beam new file mode 100644 index 0000000000000000000000000000000000000000..85c6b8d3e7d9c4e4941278b88adde13ecbaf12fd GIT binary patch literal 4624 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 literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.List.Chars.beam b/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.List.Chars.beam new file mode 100644 index 0000000000000000000000000000000000000000..13997600c48cdd7120a4ca9c9232d8e399a66a37 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.String.Chars.beam b/resistor-color-duo/_build/test/lib/resistor_color_duo/consolidated/Elixir.String.Chars.beam new file mode 100644 index 0000000000000000000000000000000000000000..3364788e60384ed839f83f04836e41020cf75120 GIT binary patch literal 4460 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 literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/Elixir.ResistorColorDuo.beam b/resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/Elixir.ResistorColorDuo.beam new file mode 100644 index 0000000000000000000000000000000000000000..0f9dd53afbed86f0a1a36179923b85b14c21ce5e GIT binary patch literal 2020 zcmZ`)dsGug7vB&dB&b;uAt3!~1W$|7kc5{~Z4Hm0v_L_KM_Y7Rk_9$ocf;-`rfPj) zeO4+`K=MHWsi4++gj%fFdO$q2SZfu0A_c8_us%3e)Y4KP-%Lzf|M}*e-_D)i+`0G8 z?*3+y-w5)LcF@*GB)V#N72+Q^d(&3RL}k!3g`AiXKZ zWU~<71Z%%U5@gF2X7Ow`+(Zgxh5bSR5r8kiH~{X;Y`E9Ic|Twa z0HD9@1skq~ygxtyfQR1UiXRPZPXIXpoFDJDLFbAA$B-8Tz#P!_NVd_iwwK)FiS8cO z0VH&IIe#)b{WyDurn)`W_y7k-(LzUPfZ?_6}* z`drb1tA%xgt9oB;EZG=)BK$zCVpi9jz&^uh>_Fw6f%|dyI_l&8GpNW~pr#CyDw-}` zzRn9b?Rlo&HO2eZwoOzBCk;;~y5{F>{53dvivC6vTWnO!mM+{_c`!IIyjZ?`vgeSf zqwF=KJYy2@)tsXk)2>UppGKMYi5KdBHG0#E zaVA8Z&oUI?S;B-!fgiNMEMdhVGXXHT4a$UqdNjk}-W+3NjYJWWrZ#XOx0W+W-EfCQg<&e{whB*sx& znw`et^33W7bn-WJ(|tLuWVWHVCTU?$?`zC`omp&M1qGj*Ia{1L z_==YT6~ViD&7pV7Yu8;Hsl9bSt$D-A)Rp4%ahcL13H++2slNLiKk;)kN8Y)*|464s zb-9duMZI7s!gBcW%J#dVc^xnN84sou*B(k;@=bT<7w=!W9+jPaIbhhZulvdHX#Gcn z?ZIb~bYqv7)_iqfl0AQ)J-e!(iD~>WShVAbfbOSuN1u|FTzPp#>A2d}__0czZQNi&KuC?olUh+g7zOf$B`IdE<6PP2}x) zA*Jhs_de_$7%4wLT{b)DRBP1trX|1B4Mxu>E{V$!wKZRhLcK+&eid(M%4<`eOjJL6 z`}Bj)n*LlAK9(IVY5Df3BW&bW>4!U752sTz7DuP|yI{W({$2U$s);T->_@jVjCtv9p5>5AAE?N1A^jQ7LndzhAv;8A7)!mS}A!a+#u7Nk(BR~tNs9^bEFx(W7?_BBGlHa&G`y=`2l%_ebJYt#AQQ{Q S0b+$XP#lB={a;-o$o~Kn(7HYV literal 0 HcmV?d00001 diff --git a/resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/resistor_color_duo.app b/resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/resistor_color_duo.app new file mode 100644 index 0000000..09ca7d4 --- /dev/null +++ b/resistor-color-duo/_build/test/lib/resistor_color_duo/ebin/resistor_color_duo.app @@ -0,0 +1,6 @@ +{application,resistor_color_duo, + [{applications,[kernel,stdlib,elixir,logger]}, + {description,"resistor_color_duo"}, + {modules,['Elixir.ResistorColorDuo']}, + {registered,[]}, + {vsn,"0.1.0"}]}. diff --git a/resistor-color-duo/lib/resistor_color_duo.ex b/resistor-color-duo/lib/resistor_color_duo.ex new file mode 100644 index 0000000..e75ae5a --- /dev/null +++ b/resistor-color-duo/lib/resistor_color_duo.ex @@ -0,0 +1,26 @@ +defmodule ResistorColorDuo do + @colors %{ + black: 0, + brown: 1, + red: 2, + orange: 3, + yellow: 4, + green: 5, + blue: 6, + violet: 7, + grey: 8, + white: 9 + } + + @doc """ + Calculate a resistance value from two colors + """ + @spec value(colors :: [atom]) :: integer + def value(colors), + do: + colors + |> Enum.take(2) + |> Enum.map(&Map.get(@colors, &1)) + |> Enum.join() + |> String.to_integer() +end diff --git a/resistor-color-duo/mix.exs b/resistor-color-duo/mix.exs new file mode 100644 index 0000000..0c2f815 --- /dev/null +++ b/resistor-color-duo/mix.exs @@ -0,0 +1,28 @@ +defmodule ResistorColorDuo.MixProject do + use Mix.Project + + def project do + [ + app: :resistor_color_duo, + version: "0.1.0", + # elixir: "~> 1.8", + start_permanent: Mix.env() == :prod, + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + # {:dep_from_hexpm, "~> 0.3.0"}, + # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} + ] + end +end diff --git a/resistor-color-duo/test/resistor_color_duo_test.exs b/resistor-color-duo/test/resistor_color_duo_test.exs new file mode 100644 index 0000000..729f4d3 --- /dev/null +++ b/resistor-color-duo/test/resistor_color_duo_test.exs @@ -0,0 +1,60 @@ +defmodule ResistorColorDuoTest do + use ExUnit.Case + + # @tag :pending + test "Brown and black" do + colors = [:brown, :black] + output = ResistorColorDuo.value(colors) + expected = 10 + + assert output == expected + end + + test "Blue and grey" do + colors = [:blue, :grey] + output = ResistorColorDuo.value(colors) + expected = 68 + + assert output == expected + end + + test "Yellow and violet" do + colors = [:yellow, :violet] + output = ResistorColorDuo.value(colors) + expected = 47 + + assert output == expected + end + + test "White and red" do + colors = [:white, :red] + output = ResistorColorDuo.value(colors) + expected = 92 + + assert output == expected + end + + test "Orange and orange" do + colors = [:orange, :orange] + output = ResistorColorDuo.value(colors) + expected = 33 + + assert output == expected + end + + test "Ignore additional colors" do + colors = [:green, :brown, :orange] + output = ResistorColorDuo.value(colors) + expected = 51 + + assert output == expected + end + + test "Black and brown, one digit" do + colors = [:black, :brown] + output = ResistorColorDuo.value(colors) + expected = 1 + + assert output == expected + end +end diff --git a/resistor-color-duo/test/test_helper.exs b/resistor-color-duo/test/test_helper.exs new file mode 100644 index 0000000..35fc5bf --- /dev/null +++ b/resistor-color-duo/test/test_helper.exs @@ -0,0 +1,2 @@ +ExUnit.start() +ExUnit.configure(exclude: :pending, trace: true) diff --git a/resistor-color/lib/resistor_color.ex b/resistor-color/lib/resistor_color.ex index 05ad58e..537cd70 100644 --- a/resistor-color/lib/resistor_color.ex +++ b/resistor-color/lib/resistor_color.ex @@ -14,6 +14,7 @@ defmodule ResistorColor do grey: 8, white: 9 } + @doc """ Return the value of a color band """ diff --git a/space-age/.exercism/config.json b/space-age/.exercism/config.json new file mode 100644 index 0000000..3ac9dd0 --- /dev/null +++ b/space-age/.exercism/config.json @@ -0,0 +1,36 @@ +{ + "blurb": "Given an age in seconds, calculate how old someone is in terms of a given planet's solar years.", + "authors": [ + "rubysolo" + ], + "contributors": [ + "angelikatyborska", + "Cohen-Carlisle", + "dalexj", + "devonestes", + "henrik", + "jinyeow", + "koriroys", + "kytrinyx", + "lpil", + "neenjaw", + "parkerl", + "pminten", + "sotojuan", + "Teapane", + "waiting-for-dev" + ], + "files": { + "solution": [ + "lib/space_age.ex" + ], + "test": [ + "test/space_age_test.exs" + ], + "example": [ + ".meta/example.ex" + ] + }, + "source": "Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial.", + "source_url": "http://pine.fm/LearnToProgram/?Chapter=01" +} diff --git a/space-age/.exercism/metadata.json b/space-age/.exercism/metadata.json new file mode 100644 index 0000000..90b0f26 --- /dev/null +++ b/space-age/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"elixir","exercise":"space-age","id":"9a81858ebd7c46a4a47952bd1535102e","url":"https://exercism.org/tracks/elixir/exercises/space-age","handle":"rjNemo","is_requester":true,"auto_approve":false} \ No newline at end of file diff --git a/space-age/.formatter.exs b/space-age/.formatter.exs new file mode 100644 index 0000000..d2cda26 --- /dev/null +++ b/space-age/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/space-age/.gitignore b/space-age/.gitignore new file mode 100644 index 0000000..10e34a4 --- /dev/null +++ b/space-age/.gitignore @@ -0,0 +1,24 @@ +# The directory Mix will write compiled artifacts to. +/_build/ + +# If you run "mix test --cover", coverage assets end up here. +/cover/ + +# The directory Mix downloads your dependencies sources to. +/deps/ + +# Where third-party dependencies like ExDoc output generated docs. +/doc/ + +# Ignore .fetch files in case you like to edit your project deps locally. +/.fetch + +# If the VM crashes, it generates a dump, let's ignore it too. +erl_crash.dump + +# Also ignore archive artifacts (built via "mix archive.build"). +*.ez + +# Ignore package tarball (built via "mix hex.build"). +space_age-*.tar + diff --git a/space-age/HELP.md b/space-age/HELP.md new file mode 100644 index 0000000..746c699 --- /dev/null +++ b/space-age/HELP.md @@ -0,0 +1,75 @@ +# Help + +## Running the tests + +From the terminal, change to the base directory of the exercise then execute the tests with: + +```bash +$ mix test +``` + +This will execute the test file found in the `test` subfolder -- a file ending in `_test.exs` + +Documentation: + +* [`mix test` - Elixir's test execution tool](https://hexdocs.pm/mix/Mix.Tasks.Test.html) +* [`ExUnit` - Elixir's unit test library](https://hexdocs.pm/ex_unit/ExUnit.html) + +## Pending tests + +In test suites of practice exercises, all but the first test have been tagged to be skipped. + +Once you get a test passing, you can unskip the next one by commenting out the relevant `@tag :pending` with a `#` symbol. + +For example: + +```elixir +# @tag :pending +test "shouting" do + assert Bob.hey("WATCH OUT!") == "Whoa, chill out!" +end +``` + +If you wish to run all tests at once, you can include all skipped test by using the `--include` flag on the `mix test` command: + +```bash +$ mix test --include pending +``` + +Or, you can enable all the tests by commenting out the `ExUnit.configure` line in the file `test/test_helper.exs`. + +```elixir +# ExUnit.configure(exclude: :pending, trace: true) +``` + +## Useful `mix test` options + +* `test/.exs:LINENUM` - runs only a single test, the test from `.exs` whose definition is on line `LINENUM` +* `--failed` - runs only tests that failed the last time they ran +* `--max-failures` - the suite stops evaluating tests when this number of test failures +is reached +* `--seed 0` - disables randomization so the tests in a single file will always be ran +in the same order they were defined in + +## Submitting your solution + +You can submit your solution using the `exercism submit lib/space_age.ex` command. +This command will upload your solution to the Exercism website and print the solution page's URL. + +It's possible to submit an incomplete solution which allows you to: + +- See how others have completed the exercise +- Request help from a mentor + +## Need to get help? + +If you'd like help solving the exercise, check the following pages: + +- The [Elixir track's documentation](https://exercism.org/docs/tracks/elixir) +- [Exercism's support channel on gitter](https://gitter.im/exercism/support) +- The [Frequently Asked Questions](https://exercism.org/docs/using/faqs) + +Should those resources not suffice, you could submit your (incomplete) solution to request mentoring. + +If you're stuck on something, it may help to look at some of the [available resources](https://exercism.org/docs/tracks/elixir/resources) out there where answers might be found. +If you can't find what you're looking for in the documentation, feel free to ask help in the Exercism's BEAM [gitter channel](https://gitter.im/exercism/xerlang). \ No newline at end of file diff --git a/space-age/README.md b/space-age/README.md new file mode 100644 index 0000000..85b72c9 --- /dev/null +++ b/space-age/README.md @@ -0,0 +1,51 @@ +# Space Age + +Welcome to Space Age on Exercism's Elixir Track. +If you need help running the tests or submitting your code, check out `HELP.md`. + +## 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](http://www.youtube.com/watch?v=Z_2gbGXzFbs). + +## Source + +### Created by + +- @rubysolo + +### Contributed to by + +- @angelikatyborska +- @Cohen-Carlisle +- @dalexj +- @devonestes +- @henrik +- @jinyeow +- @koriroys +- @kytrinyx +- @lpil +- @neenjaw +- @parkerl +- @pminten +- @sotojuan +- @Teapane +- @waiting-for-dev + +### Based on + +Partially inspired by Chapter 1 in Chris Pine's online Learn to Program tutorial. - http://pine.fm/LearnToProgram/?Chapter=01 \ No newline at end of file diff --git a/space-age/lib/space_age.ex b/space-age/lib/space_age.ex new file mode 100644 index 0000000..8822ad6 --- /dev/null +++ b/space-age/lib/space_age.ex @@ -0,0 +1,40 @@ +defmodule SpaceAge do + @type planet :: + :mercury + | :venus + | :earth + | :mars + | :jupiter + | :saturn + | :uranus + | :neptune + + @seconds_in_earth_year 31_557_600 + @seconds_in_mercury_year 0.2408467 * @seconds_in_earth_year + @seconds_in_venus_year 0.61519726 * @seconds_in_earth_year + @seconds_in_mars_year 1.8808158 * @seconds_in_earth_year + @seconds_in_jupiter_year 11.862615 * @seconds_in_earth_year + @seconds_in_saturn_year 29.447498 * @seconds_in_earth_year + @seconds_in_uranus_year 84.016846 * @seconds_in_earth_year + @seconds_in_neptune_year 164.79132 * @seconds_in_earth_year + + @doc """ + Return the number of years a person that has lived for 'seconds' seconds is + aged on 'planet', or an error if 'planet' is not a planet. + """ + @spec age_on(planet, pos_integer) :: {:ok, float} | {:error, String.t()} + def age_on(planet, seconds) do + case planet do + :mercury -> {:ok, seconds / @seconds_in_mercury_year} + :venus -> {:ok, seconds / @seconds_in_venus_year} + :earth -> {:ok, seconds / @seconds_in_earth_year} + :mars -> {:ok, seconds / @seconds_in_mars_year} + :jupiter -> {:ok, seconds / @seconds_in_jupiter_year} + :saturn -> {:ok, seconds / @seconds_in_saturn_year} + :uranus -> {:ok, seconds / @seconds_in_uranus_year} + :neptune -> {:ok, seconds / @seconds_in_neptune_year} + # sorry pluto + _ -> {:error, "not a planet"} + end + end +end diff --git a/space-age/mix.exs b/space-age/mix.exs new file mode 100644 index 0000000..384551f --- /dev/null +++ b/space-age/mix.exs @@ -0,0 +1,28 @@ +defmodule SpaceAge.MixProject do + use Mix.Project + + def project do + [ + app: :space_age, + version: "0.1.0", + # elixir: "~> 1.8", + start_permanent: Mix.env() == :prod, + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + # {:dep_from_hexpm, "~> 0.3.0"}, + # {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"} + ] + end +end diff --git a/space-age/test/space_age_test.exs b/space-age/test/space_age_test.exs new file mode 100644 index 0000000..8017b28 --- /dev/null +++ b/space-age/test/space_age_test.exs @@ -0,0 +1,70 @@ +defmodule SpaceAgeTest do + use ExUnit.Case + + test "age on Earth" do + input = 1_000_000_000 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 31.69, age, 0.005 + end + + test "age on Mercury" do + input = 2_134_835_688 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 67.65, age, 0.005 + {:ok, age} = SpaceAge.age_on(:mercury, input) + assert_in_delta 280.88, age, 0.005 + end + + test "age on Venus" do + input = 189_839_836 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 6.02, age, 0.005 + {:ok, age} = SpaceAge.age_on(:venus, input) + assert_in_delta 9.78, age, 0.005 + end + + test "age on Mars" do + input = 2_129_871_239 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 67.49, age, 0.005 + {:ok, age} = SpaceAge.age_on(:mars, input) + assert_in_delta 35.88, age, 0.005 + end + + test "age on Jupiter" do + input = 901_876_382 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 28.58, age, 0.005 + {:ok, age} = SpaceAge.age_on(:jupiter, input) + assert_in_delta 2.41, age, 0.005 + end + + test "age on Saturn" do + input = 2_000_000_000 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 63.38, age, 0.005 + {:ok, age} = SpaceAge.age_on(:saturn, input) + assert_in_delta 2.15, age, 0.005 + end + + test "age on Uranus" do + input = 1_210_123_456 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 38.35, age, 0.005 + {:ok, age} = SpaceAge.age_on(:uranus, input) + assert_in_delta 0.46, age, 0.005 + end + + test "age on Neptune" do + input = 1_821_023_456 + {:ok, age} = SpaceAge.age_on(:earth, input) + assert_in_delta 57.70, age, 0.005 + {:ok, age} = SpaceAge.age_on(:neptune, input) + assert_in_delta 0.35, age, 0.005 + end + + test "invalid planet causes error" do + input = 680_804_807 + assert SpaceAge.age_on(:sun, input) == {:error, "not a planet"} + end +end diff --git a/space-age/test/test_helper.exs b/space-age/test/test_helper.exs new file mode 100644 index 0000000..35fc5bf --- /dev/null +++ b/space-age/test/test_helper.exs @@ -0,0 +1,2 @@ +ExUnit.start() +ExUnit.configure(exclude: :pending, trace: true)