From 6f007524a661a33de27c88e6029bb13fc2f022a8 Mon Sep 17 00:00:00 2001 From: Xevion Date: Mon, 18 Jan 2021 17:51:48 -0600 Subject: [PATCH] beer song elixir solution --- elixir/beer-song/.exercism/metadata.json | 1 + elixir/beer-song/.formatter.exs | 4 + elixir/beer-song/.gitignore | 24 ++ elixir/beer-song/README.md | 363 ++++++++++++++++++++++ elixir/beer-song/lib/beer_song.ex | 47 +++ elixir/beer-song/mix.exs | 28 ++ elixir/beer-song/test/beer_song_test.exs | 377 +++++++++++++++++++++++ elixir/beer-song/test/test_helper.exs | 2 + 8 files changed, 846 insertions(+) create mode 100644 elixir/beer-song/.exercism/metadata.json create mode 100644 elixir/beer-song/.formatter.exs create mode 100644 elixir/beer-song/.gitignore create mode 100644 elixir/beer-song/README.md create mode 100644 elixir/beer-song/lib/beer_song.ex create mode 100644 elixir/beer-song/mix.exs create mode 100644 elixir/beer-song/test/beer_song_test.exs create mode 100644 elixir/beer-song/test/test_helper.exs diff --git a/elixir/beer-song/.exercism/metadata.json b/elixir/beer-song/.exercism/metadata.json new file mode 100644 index 0000000..ace4d62 --- /dev/null +++ b/elixir/beer-song/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"elixir","exercise":"beer-song","id":"0a7b5577f23646cbb666a837ef613b1c","url":"https://exercism.io/my/solutions/0a7b5577f23646cbb666a837ef613b1c","handle":"Xevion","is_requester":true,"auto_approve":false} \ No newline at end of file diff --git a/elixir/beer-song/.formatter.exs b/elixir/beer-song/.formatter.exs new file mode 100644 index 0000000..d2cda26 --- /dev/null +++ b/elixir/beer-song/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/elixir/beer-song/.gitignore b/elixir/beer-song/.gitignore new file mode 100644 index 0000000..a7d471b --- /dev/null +++ b/elixir/beer-song/.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"). +beer_song-*.tar + diff --git a/elixir/beer-song/README.md b/elixir/beer-song/README.md new file mode 100644 index 0000000..fbded06 --- /dev/null +++ b/elixir/beer-song/README.md @@ -0,0 +1,363 @@ +# Beer Song + +Recite the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall. + +Note that not all verses are identical. + +```text +99 bottles of beer on the wall, 99 bottles of beer. +Take one down and pass it around, 98 bottles of beer on the wall. + +98 bottles of beer on the wall, 98 bottles of beer. +Take one down and pass it around, 97 bottles of beer on the wall. + +97 bottles of beer on the wall, 97 bottles of beer. +Take one down and pass it around, 96 bottles of beer on the wall. + +96 bottles of beer on the wall, 96 bottles of beer. +Take one down and pass it around, 95 bottles of beer on the wall. + +95 bottles of beer on the wall, 95 bottles of beer. +Take one down and pass it around, 94 bottles of beer on the wall. + +94 bottles of beer on the wall, 94 bottles of beer. +Take one down and pass it around, 93 bottles of beer on the wall. + +93 bottles of beer on the wall, 93 bottles of beer. +Take one down and pass it around, 92 bottles of beer on the wall. + +92 bottles of beer on the wall, 92 bottles of beer. +Take one down and pass it around, 91 bottles of beer on the wall. + +91 bottles of beer on the wall, 91 bottles of beer. +Take one down and pass it around, 90 bottles of beer on the wall. + +90 bottles of beer on the wall, 90 bottles of beer. +Take one down and pass it around, 89 bottles of beer on the wall. + +89 bottles of beer on the wall, 89 bottles of beer. +Take one down and pass it around, 88 bottles of beer on the wall. + +88 bottles of beer on the wall, 88 bottles of beer. +Take one down and pass it around, 87 bottles of beer on the wall. + +87 bottles of beer on the wall, 87 bottles of beer. +Take one down and pass it around, 86 bottles of beer on the wall. + +86 bottles of beer on the wall, 86 bottles of beer. +Take one down and pass it around, 85 bottles of beer on the wall. + +85 bottles of beer on the wall, 85 bottles of beer. +Take one down and pass it around, 84 bottles of beer on the wall. + +84 bottles of beer on the wall, 84 bottles of beer. +Take one down and pass it around, 83 bottles of beer on the wall. + +83 bottles of beer on the wall, 83 bottles of beer. +Take one down and pass it around, 82 bottles of beer on the wall. + +82 bottles of beer on the wall, 82 bottles of beer. +Take one down and pass it around, 81 bottles of beer on the wall. + +81 bottles of beer on the wall, 81 bottles of beer. +Take one down and pass it around, 80 bottles of beer on the wall. + +80 bottles of beer on the wall, 80 bottles of beer. +Take one down and pass it around, 79 bottles of beer on the wall. + +79 bottles of beer on the wall, 79 bottles of beer. +Take one down and pass it around, 78 bottles of beer on the wall. + +78 bottles of beer on the wall, 78 bottles of beer. +Take one down and pass it around, 77 bottles of beer on the wall. + +77 bottles of beer on the wall, 77 bottles of beer. +Take one down and pass it around, 76 bottles of beer on the wall. + +76 bottles of beer on the wall, 76 bottles of beer. +Take one down and pass it around, 75 bottles of beer on the wall. + +75 bottles of beer on the wall, 75 bottles of beer. +Take one down and pass it around, 74 bottles of beer on the wall. + +74 bottles of beer on the wall, 74 bottles of beer. +Take one down and pass it around, 73 bottles of beer on the wall. + +73 bottles of beer on the wall, 73 bottles of beer. +Take one down and pass it around, 72 bottles of beer on the wall. + +72 bottles of beer on the wall, 72 bottles of beer. +Take one down and pass it around, 71 bottles of beer on the wall. + +71 bottles of beer on the wall, 71 bottles of beer. +Take one down and pass it around, 70 bottles of beer on the wall. + +70 bottles of beer on the wall, 70 bottles of beer. +Take one down and pass it around, 69 bottles of beer on the wall. + +69 bottles of beer on the wall, 69 bottles of beer. +Take one down and pass it around, 68 bottles of beer on the wall. + +68 bottles of beer on the wall, 68 bottles of beer. +Take one down and pass it around, 67 bottles of beer on the wall. + +67 bottles of beer on the wall, 67 bottles of beer. +Take one down and pass it around, 66 bottles of beer on the wall. + +66 bottles of beer on the wall, 66 bottles of beer. +Take one down and pass it around, 65 bottles of beer on the wall. + +65 bottles of beer on the wall, 65 bottles of beer. +Take one down and pass it around, 64 bottles of beer on the wall. + +64 bottles of beer on the wall, 64 bottles of beer. +Take one down and pass it around, 63 bottles of beer on the wall. + +63 bottles of beer on the wall, 63 bottles of beer. +Take one down and pass it around, 62 bottles of beer on the wall. + +62 bottles of beer on the wall, 62 bottles of beer. +Take one down and pass it around, 61 bottles of beer on the wall. + +61 bottles of beer on the wall, 61 bottles of beer. +Take one down and pass it around, 60 bottles of beer on the wall. + +60 bottles of beer on the wall, 60 bottles of beer. +Take one down and pass it around, 59 bottles of beer on the wall. + +59 bottles of beer on the wall, 59 bottles of beer. +Take one down and pass it around, 58 bottles of beer on the wall. + +58 bottles of beer on the wall, 58 bottles of beer. +Take one down and pass it around, 57 bottles of beer on the wall. + +57 bottles of beer on the wall, 57 bottles of beer. +Take one down and pass it around, 56 bottles of beer on the wall. + +56 bottles of beer on the wall, 56 bottles of beer. +Take one down and pass it around, 55 bottles of beer on the wall. + +55 bottles of beer on the wall, 55 bottles of beer. +Take one down and pass it around, 54 bottles of beer on the wall. + +54 bottles of beer on the wall, 54 bottles of beer. +Take one down and pass it around, 53 bottles of beer on the wall. + +53 bottles of beer on the wall, 53 bottles of beer. +Take one down and pass it around, 52 bottles of beer on the wall. + +52 bottles of beer on the wall, 52 bottles of beer. +Take one down and pass it around, 51 bottles of beer on the wall. + +51 bottles of beer on the wall, 51 bottles of beer. +Take one down and pass it around, 50 bottles of beer on the wall. + +50 bottles of beer on the wall, 50 bottles of beer. +Take one down and pass it around, 49 bottles of beer on the wall. + +49 bottles of beer on the wall, 49 bottles of beer. +Take one down and pass it around, 48 bottles of beer on the wall. + +48 bottles of beer on the wall, 48 bottles of beer. +Take one down and pass it around, 47 bottles of beer on the wall. + +47 bottles of beer on the wall, 47 bottles of beer. +Take one down and pass it around, 46 bottles of beer on the wall. + +46 bottles of beer on the wall, 46 bottles of beer. +Take one down and pass it around, 45 bottles of beer on the wall. + +45 bottles of beer on the wall, 45 bottles of beer. +Take one down and pass it around, 44 bottles of beer on the wall. + +44 bottles of beer on the wall, 44 bottles of beer. +Take one down and pass it around, 43 bottles of beer on the wall. + +43 bottles of beer on the wall, 43 bottles of beer. +Take one down and pass it around, 42 bottles of beer on the wall. + +42 bottles of beer on the wall, 42 bottles of beer. +Take one down and pass it around, 41 bottles of beer on the wall. + +41 bottles of beer on the wall, 41 bottles of beer. +Take one down and pass it around, 40 bottles of beer on the wall. + +40 bottles of beer on the wall, 40 bottles of beer. +Take one down and pass it around, 39 bottles of beer on the wall. + +39 bottles of beer on the wall, 39 bottles of beer. +Take one down and pass it around, 38 bottles of beer on the wall. + +38 bottles of beer on the wall, 38 bottles of beer. +Take one down and pass it around, 37 bottles of beer on the wall. + +37 bottles of beer on the wall, 37 bottles of beer. +Take one down and pass it around, 36 bottles of beer on the wall. + +36 bottles of beer on the wall, 36 bottles of beer. +Take one down and pass it around, 35 bottles of beer on the wall. + +35 bottles of beer on the wall, 35 bottles of beer. +Take one down and pass it around, 34 bottles of beer on the wall. + +34 bottles of beer on the wall, 34 bottles of beer. +Take one down and pass it around, 33 bottles of beer on the wall. + +33 bottles of beer on the wall, 33 bottles of beer. +Take one down and pass it around, 32 bottles of beer on the wall. + +32 bottles of beer on the wall, 32 bottles of beer. +Take one down and pass it around, 31 bottles of beer on the wall. + +31 bottles of beer on the wall, 31 bottles of beer. +Take one down and pass it around, 30 bottles of beer on the wall. + +30 bottles of beer on the wall, 30 bottles of beer. +Take one down and pass it around, 29 bottles of beer on the wall. + +29 bottles of beer on the wall, 29 bottles of beer. +Take one down and pass it around, 28 bottles of beer on the wall. + +28 bottles of beer on the wall, 28 bottles of beer. +Take one down and pass it around, 27 bottles of beer on the wall. + +27 bottles of beer on the wall, 27 bottles of beer. +Take one down and pass it around, 26 bottles of beer on the wall. + +26 bottles of beer on the wall, 26 bottles of beer. +Take one down and pass it around, 25 bottles of beer on the wall. + +25 bottles of beer on the wall, 25 bottles of beer. +Take one down and pass it around, 24 bottles of beer on the wall. + +24 bottles of beer on the wall, 24 bottles of beer. +Take one down and pass it around, 23 bottles of beer on the wall. + +23 bottles of beer on the wall, 23 bottles of beer. +Take one down and pass it around, 22 bottles of beer on the wall. + +22 bottles of beer on the wall, 22 bottles of beer. +Take one down and pass it around, 21 bottles of beer on the wall. + +21 bottles of beer on the wall, 21 bottles of beer. +Take one down and pass it around, 20 bottles of beer on the wall. + +20 bottles of beer on the wall, 20 bottles of beer. +Take one down and pass it around, 19 bottles of beer on the wall. + +19 bottles of beer on the wall, 19 bottles of beer. +Take one down and pass it around, 18 bottles of beer on the wall. + +18 bottles of beer on the wall, 18 bottles of beer. +Take one down and pass it around, 17 bottles of beer on the wall. + +17 bottles of beer on the wall, 17 bottles of beer. +Take one down and pass it around, 16 bottles of beer on the wall. + +16 bottles of beer on the wall, 16 bottles of beer. +Take one down and pass it around, 15 bottles of beer on the wall. + +15 bottles of beer on the wall, 15 bottles of beer. +Take one down and pass it around, 14 bottles of beer on the wall. + +14 bottles of beer on the wall, 14 bottles of beer. +Take one down and pass it around, 13 bottles of beer on the wall. + +13 bottles of beer on the wall, 13 bottles of beer. +Take one down and pass it around, 12 bottles of beer on the wall. + +12 bottles of beer on the wall, 12 bottles of beer. +Take one down and pass it around, 11 bottles of beer on the wall. + +11 bottles of beer on the wall, 11 bottles of beer. +Take one down and pass it around, 10 bottles of beer on the wall. + +10 bottles of beer on the wall, 10 bottles of beer. +Take one down and pass it around, 9 bottles of beer on the wall. + +9 bottles of beer on the wall, 9 bottles of beer. +Take one down and pass it around, 8 bottles of beer on the wall. + +8 bottles of beer on the wall, 8 bottles of beer. +Take one down and pass it around, 7 bottles of beer on the wall. + +7 bottles of beer on the wall, 7 bottles of beer. +Take one down and pass it around, 6 bottles of beer on the wall. + +6 bottles of beer on the wall, 6 bottles of beer. +Take one down and pass it around, 5 bottles of beer on the wall. + +5 bottles of beer on the wall, 5 bottles of beer. +Take one down and pass it around, 4 bottles of beer on the wall. + +4 bottles of beer on the wall, 4 bottles of beer. +Take one down and pass it around, 3 bottles of beer on the wall. + +3 bottles of beer on the wall, 3 bottles of beer. +Take one down and pass it around, 2 bottles of beer on the wall. + +2 bottles of beer on the wall, 2 bottles of beer. +Take one down and pass it around, 1 bottle of beer on the wall. + +1 bottle of beer on the wall, 1 bottle of beer. +Take it down and pass it around, no more bottles of beer on the wall. + +No more bottles of beer on the wall, no more bottles of beer. +Go to the store and buy some more, 99 bottles of beer on the wall. +``` + +## For bonus points + +Did you get the tests passing and the code clean? If you want to, these +are some additional things you could try: + +* Remove as much duplication as you possibly can. +* Optimize for readability, even if it means introducing duplication. +* If you've removed all the duplication, do you have a lot of + conditionals? Try replacing the conditionals with polymorphism, if it + applies in this language. How readable is it? + +Then please share your thoughts in a comment on the submission. Did this +experiment make the code better? Worse? Did you learn anything from it? + +## Running tests + +Execute the tests with: + +```bash +$ mix test +``` + +### Pending tests + +In the test suites, all but the first test have been 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 +``` + +Or, you can enable all the tests by commenting out the +`ExUnit.configure` line in the test suite. + +```elixir +# ExUnit.configure exclude: :pending, trace: true +``` + +If you're stuck on something, it may help to look at some of +the [available resources](https://exercism.io/tracks/elixir/resources) +out there where answers might be found. + +## Source + +Learn to Program by Chris Pine [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06) + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/elixir/beer-song/lib/beer_song.ex b/elixir/beer-song/lib/beer_song.ex new file mode 100644 index 0000000..87ff435 --- /dev/null +++ b/elixir/beer-song/lib/beer_song.ex @@ -0,0 +1,47 @@ +defmodule BeerSong do + @basic "~s bottle~s of beer on the wall, ~s bottle~s of beer.\n~s, ~s bottle~s of beer on the wall.~n" + @take "Take ~s down and pass it around" + @store "Go to the store and buy some more" + + @doc """ + Get a single verse of the beer song + """ + @spec verse(integer) :: String.t() + def verse(number) do + :io_lib.format(@basic, get_args(number)) |> to_string() + end + + @doc """ + Get the entire beer song for a given range of numbers of bottles. + """ + @spec lyrics(Range.t()) :: String.t() + def lyrics(), do: lyrics(99..0) + + def lyrics(range) do + range |> Enum.map(&verse(&1)) |> Enum.join("\n") + end + + defp get_args(number) do + cond do + number == 0 -> + ["No more", "s", "no more", "s", @store, "99", "s"] + + number == 1 -> + ["1", "", "1", "", :io_lib.format(@take, ["it"]) |> to_string(), "no more", "s"] + + number == 2 -> + ["2", "s", "2", "s", :io_lib.format(@take, ["one"]) |> to_string(), "1", ""] + + true -> + [ + "#{number}", + "s", + "#{number}", + "s", + :io_lib.format(@take, ["one"]) |> to_string(), + "#{number - 1}", + "s" + ] + end + end +end diff --git a/elixir/beer-song/mix.exs b/elixir/beer-song/mix.exs new file mode 100644 index 0000000..7d43bf9 --- /dev/null +++ b/elixir/beer-song/mix.exs @@ -0,0 +1,28 @@ +defmodule BeerSong.MixProject do + use Mix.Project + + def project do + [ + app: :beer_song, + 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/elixir/beer-song/test/beer_song_test.exs b/elixir/beer-song/test/beer_song_test.exs new file mode 100644 index 0000000..2c6d0f4 --- /dev/null +++ b/elixir/beer-song/test/beer_song_test.exs @@ -0,0 +1,377 @@ +defmodule BeerSongTest do + use ExUnit.Case + + describe "verse" do + # @tag :pending + test "first generic verse" do + assert BeerSong.verse(99) == """ + 99 bottles of beer on the wall, 99 bottles of beer. + Take one down and pass it around, 98 bottles of beer on the wall. + """ + end + + @tag :pending + test "last generic verse" do + assert BeerSong.verse(3) == """ + 3 bottles of beer on the wall, 3 bottles of beer. + Take one down and pass it around, 2 bottles of beer on the wall. + """ + end + + @tag :pending + test "verse with 2 bottles" do + assert BeerSong.verse(2) == """ + 2 bottles of beer on the wall, 2 bottles of beer. + Take one down and pass it around, 1 bottle of beer on the wall. + """ + end + + @tag :pending + test "verse with 1 bottle" do + assert BeerSong.verse(1) == """ + 1 bottle of beer on the wall, 1 bottle of beer. + Take it down and pass it around, no more bottles of beer on the wall. + """ + end + + @tag :pending + test "verse with 0 bottles" do + assert BeerSong.verse(0) == """ + No more bottles of beer on the wall, no more bottles of beer. + Go to the store and buy some more, 99 bottles of beer on the wall. + """ + end + end + + describe "lyrics" do + @tag :pending + test "first two verses" do + assert BeerSong.lyrics(99..98) == """ + 99 bottles of beer on the wall, 99 bottles of beer. + Take one down and pass it around, 98 bottles of beer on the wall. + + 98 bottles of beer on the wall, 98 bottles of beer. + Take one down and pass it around, 97 bottles of beer on the wall. + """ + end + + @tag :pending + test "last three verses" do + assert BeerSong.lyrics(2..0) == """ + 2 bottles of beer on the wall, 2 bottles of beer. + Take one down and pass it around, 1 bottle of beer on the wall. + + 1 bottle of beer on the wall, 1 bottle of beer. + Take it down and pass it around, no more bottles of beer on the wall. + + No more bottles of beer on the wall, no more bottles of beer. + Go to the store and buy some more, 99 bottles of beer on the wall. + """ + end + + @tag :pending + test "all verses" do + assert BeerSong.lyrics() == """ + 99 bottles of beer on the wall, 99 bottles of beer. + Take one down and pass it around, 98 bottles of beer on the wall. + + 98 bottles of beer on the wall, 98 bottles of beer. + Take one down and pass it around, 97 bottles of beer on the wall. + + 97 bottles of beer on the wall, 97 bottles of beer. + Take one down and pass it around, 96 bottles of beer on the wall. + + 96 bottles of beer on the wall, 96 bottles of beer. + Take one down and pass it around, 95 bottles of beer on the wall. + + 95 bottles of beer on the wall, 95 bottles of beer. + Take one down and pass it around, 94 bottles of beer on the wall. + + 94 bottles of beer on the wall, 94 bottles of beer. + Take one down and pass it around, 93 bottles of beer on the wall. + + 93 bottles of beer on the wall, 93 bottles of beer. + Take one down and pass it around, 92 bottles of beer on the wall. + + 92 bottles of beer on the wall, 92 bottles of beer. + Take one down and pass it around, 91 bottles of beer on the wall. + + 91 bottles of beer on the wall, 91 bottles of beer. + Take one down and pass it around, 90 bottles of beer on the wall. + + 90 bottles of beer on the wall, 90 bottles of beer. + Take one down and pass it around, 89 bottles of beer on the wall. + + 89 bottles of beer on the wall, 89 bottles of beer. + Take one down and pass it around, 88 bottles of beer on the wall. + + 88 bottles of beer on the wall, 88 bottles of beer. + Take one down and pass it around, 87 bottles of beer on the wall. + + 87 bottles of beer on the wall, 87 bottles of beer. + Take one down and pass it around, 86 bottles of beer on the wall. + + 86 bottles of beer on the wall, 86 bottles of beer. + Take one down and pass it around, 85 bottles of beer on the wall. + + 85 bottles of beer on the wall, 85 bottles of beer. + Take one down and pass it around, 84 bottles of beer on the wall. + + 84 bottles of beer on the wall, 84 bottles of beer. + Take one down and pass it around, 83 bottles of beer on the wall. + + 83 bottles of beer on the wall, 83 bottles of beer. + Take one down and pass it around, 82 bottles of beer on the wall. + + 82 bottles of beer on the wall, 82 bottles of beer. + Take one down and pass it around, 81 bottles of beer on the wall. + + 81 bottles of beer on the wall, 81 bottles of beer. + Take one down and pass it around, 80 bottles of beer on the wall. + + 80 bottles of beer on the wall, 80 bottles of beer. + Take one down and pass it around, 79 bottles of beer on the wall. + + 79 bottles of beer on the wall, 79 bottles of beer. + Take one down and pass it around, 78 bottles of beer on the wall. + + 78 bottles of beer on the wall, 78 bottles of beer. + Take one down and pass it around, 77 bottles of beer on the wall. + + 77 bottles of beer on the wall, 77 bottles of beer. + Take one down and pass it around, 76 bottles of beer on the wall. + + 76 bottles of beer on the wall, 76 bottles of beer. + Take one down and pass it around, 75 bottles of beer on the wall. + + 75 bottles of beer on the wall, 75 bottles of beer. + Take one down and pass it around, 74 bottles of beer on the wall. + + 74 bottles of beer on the wall, 74 bottles of beer. + Take one down and pass it around, 73 bottles of beer on the wall. + + 73 bottles of beer on the wall, 73 bottles of beer. + Take one down and pass it around, 72 bottles of beer on the wall. + + 72 bottles of beer on the wall, 72 bottles of beer. + Take one down and pass it around, 71 bottles of beer on the wall. + + 71 bottles of beer on the wall, 71 bottles of beer. + Take one down and pass it around, 70 bottles of beer on the wall. + + 70 bottles of beer on the wall, 70 bottles of beer. + Take one down and pass it around, 69 bottles of beer on the wall. + + 69 bottles of beer on the wall, 69 bottles of beer. + Take one down and pass it around, 68 bottles of beer on the wall. + + 68 bottles of beer on the wall, 68 bottles of beer. + Take one down and pass it around, 67 bottles of beer on the wall. + + 67 bottles of beer on the wall, 67 bottles of beer. + Take one down and pass it around, 66 bottles of beer on the wall. + + 66 bottles of beer on the wall, 66 bottles of beer. + Take one down and pass it around, 65 bottles of beer on the wall. + + 65 bottles of beer on the wall, 65 bottles of beer. + Take one down and pass it around, 64 bottles of beer on the wall. + + 64 bottles of beer on the wall, 64 bottles of beer. + Take one down and pass it around, 63 bottles of beer on the wall. + + 63 bottles of beer on the wall, 63 bottles of beer. + Take one down and pass it around, 62 bottles of beer on the wall. + + 62 bottles of beer on the wall, 62 bottles of beer. + Take one down and pass it around, 61 bottles of beer on the wall. + + 61 bottles of beer on the wall, 61 bottles of beer. + Take one down and pass it around, 60 bottles of beer on the wall. + + 60 bottles of beer on the wall, 60 bottles of beer. + Take one down and pass it around, 59 bottles of beer on the wall. + + 59 bottles of beer on the wall, 59 bottles of beer. + Take one down and pass it around, 58 bottles of beer on the wall. + + 58 bottles of beer on the wall, 58 bottles of beer. + Take one down and pass it around, 57 bottles of beer on the wall. + + 57 bottles of beer on the wall, 57 bottles of beer. + Take one down and pass it around, 56 bottles of beer on the wall. + + 56 bottles of beer on the wall, 56 bottles of beer. + Take one down and pass it around, 55 bottles of beer on the wall. + + 55 bottles of beer on the wall, 55 bottles of beer. + Take one down and pass it around, 54 bottles of beer on the wall. + + 54 bottles of beer on the wall, 54 bottles of beer. + Take one down and pass it around, 53 bottles of beer on the wall. + + 53 bottles of beer on the wall, 53 bottles of beer. + Take one down and pass it around, 52 bottles of beer on the wall. + + 52 bottles of beer on the wall, 52 bottles of beer. + Take one down and pass it around, 51 bottles of beer on the wall. + + 51 bottles of beer on the wall, 51 bottles of beer. + Take one down and pass it around, 50 bottles of beer on the wall. + + 50 bottles of beer on the wall, 50 bottles of beer. + Take one down and pass it around, 49 bottles of beer on the wall. + + 49 bottles of beer on the wall, 49 bottles of beer. + Take one down and pass it around, 48 bottles of beer on the wall. + + 48 bottles of beer on the wall, 48 bottles of beer. + Take one down and pass it around, 47 bottles of beer on the wall. + + 47 bottles of beer on the wall, 47 bottles of beer. + Take one down and pass it around, 46 bottles of beer on the wall. + + 46 bottles of beer on the wall, 46 bottles of beer. + Take one down and pass it around, 45 bottles of beer on the wall. + + 45 bottles of beer on the wall, 45 bottles of beer. + Take one down and pass it around, 44 bottles of beer on the wall. + + 44 bottles of beer on the wall, 44 bottles of beer. + Take one down and pass it around, 43 bottles of beer on the wall. + + 43 bottles of beer on the wall, 43 bottles of beer. + Take one down and pass it around, 42 bottles of beer on the wall. + + 42 bottles of beer on the wall, 42 bottles of beer. + Take one down and pass it around, 41 bottles of beer on the wall. + + 41 bottles of beer on the wall, 41 bottles of beer. + Take one down and pass it around, 40 bottles of beer on the wall. + + 40 bottles of beer on the wall, 40 bottles of beer. + Take one down and pass it around, 39 bottles of beer on the wall. + + 39 bottles of beer on the wall, 39 bottles of beer. + Take one down and pass it around, 38 bottles of beer on the wall. + + 38 bottles of beer on the wall, 38 bottles of beer. + Take one down and pass it around, 37 bottles of beer on the wall. + + 37 bottles of beer on the wall, 37 bottles of beer. + Take one down and pass it around, 36 bottles of beer on the wall. + + 36 bottles of beer on the wall, 36 bottles of beer. + Take one down and pass it around, 35 bottles of beer on the wall. + + 35 bottles of beer on the wall, 35 bottles of beer. + Take one down and pass it around, 34 bottles of beer on the wall. + + 34 bottles of beer on the wall, 34 bottles of beer. + Take one down and pass it around, 33 bottles of beer on the wall. + + 33 bottles of beer on the wall, 33 bottles of beer. + Take one down and pass it around, 32 bottles of beer on the wall. + + 32 bottles of beer on the wall, 32 bottles of beer. + Take one down and pass it around, 31 bottles of beer on the wall. + + 31 bottles of beer on the wall, 31 bottles of beer. + Take one down and pass it around, 30 bottles of beer on the wall. + + 30 bottles of beer on the wall, 30 bottles of beer. + Take one down and pass it around, 29 bottles of beer on the wall. + + 29 bottles of beer on the wall, 29 bottles of beer. + Take one down and pass it around, 28 bottles of beer on the wall. + + 28 bottles of beer on the wall, 28 bottles of beer. + Take one down and pass it around, 27 bottles of beer on the wall. + + 27 bottles of beer on the wall, 27 bottles of beer. + Take one down and pass it around, 26 bottles of beer on the wall. + + 26 bottles of beer on the wall, 26 bottles of beer. + Take one down and pass it around, 25 bottles of beer on the wall. + + 25 bottles of beer on the wall, 25 bottles of beer. + Take one down and pass it around, 24 bottles of beer on the wall. + + 24 bottles of beer on the wall, 24 bottles of beer. + Take one down and pass it around, 23 bottles of beer on the wall. + + 23 bottles of beer on the wall, 23 bottles of beer. + Take one down and pass it around, 22 bottles of beer on the wall. + + 22 bottles of beer on the wall, 22 bottles of beer. + Take one down and pass it around, 21 bottles of beer on the wall. + + 21 bottles of beer on the wall, 21 bottles of beer. + Take one down and pass it around, 20 bottles of beer on the wall. + + 20 bottles of beer on the wall, 20 bottles of beer. + Take one down and pass it around, 19 bottles of beer on the wall. + + 19 bottles of beer on the wall, 19 bottles of beer. + Take one down and pass it around, 18 bottles of beer on the wall. + + 18 bottles of beer on the wall, 18 bottles of beer. + Take one down and pass it around, 17 bottles of beer on the wall. + + 17 bottles of beer on the wall, 17 bottles of beer. + Take one down and pass it around, 16 bottles of beer on the wall. + + 16 bottles of beer on the wall, 16 bottles of beer. + Take one down and pass it around, 15 bottles of beer on the wall. + + 15 bottles of beer on the wall, 15 bottles of beer. + Take one down and pass it around, 14 bottles of beer on the wall. + + 14 bottles of beer on the wall, 14 bottles of beer. + Take one down and pass it around, 13 bottles of beer on the wall. + + 13 bottles of beer on the wall, 13 bottles of beer. + Take one down and pass it around, 12 bottles of beer on the wall. + + 12 bottles of beer on the wall, 12 bottles of beer. + Take one down and pass it around, 11 bottles of beer on the wall. + + 11 bottles of beer on the wall, 11 bottles of beer. + Take one down and pass it around, 10 bottles of beer on the wall. + + 10 bottles of beer on the wall, 10 bottles of beer. + Take one down and pass it around, 9 bottles of beer on the wall. + + 9 bottles of beer on the wall, 9 bottles of beer. + Take one down and pass it around, 8 bottles of beer on the wall. + + 8 bottles of beer on the wall, 8 bottles of beer. + Take one down and pass it around, 7 bottles of beer on the wall. + + 7 bottles of beer on the wall, 7 bottles of beer. + Take one down and pass it around, 6 bottles of beer on the wall. + + 6 bottles of beer on the wall, 6 bottles of beer. + Take one down and pass it around, 5 bottles of beer on the wall. + + 5 bottles of beer on the wall, 5 bottles of beer. + Take one down and pass it around, 4 bottles of beer on the wall. + + 4 bottles of beer on the wall, 4 bottles of beer. + Take one down and pass it around, 3 bottles of beer on the wall. + + 3 bottles of beer on the wall, 3 bottles of beer. + Take one down and pass it around, 2 bottles of beer on the wall. + + 2 bottles of beer on the wall, 2 bottles of beer. + Take one down and pass it around, 1 bottle of beer on the wall. + + 1 bottle of beer on the wall, 1 bottle of beer. + Take it down and pass it around, no more bottles of beer on the wall. + + No more bottles of beer on the wall, no more bottles of beer. + Go to the store and buy some more, 99 bottles of beer on the wall. + """ + end + end +end diff --git a/elixir/beer-song/test/test_helper.exs b/elixir/beer-song/test/test_helper.exs new file mode 100644 index 0000000..0ee8618 --- /dev/null +++ b/elixir/beer-song/test/test_helper.exs @@ -0,0 +1,2 @@ +ExUnit.start() +# ExUnit.configure(exclude: :pending, trace: true)