From 238b93fec370dbbef259e832de837c5309334374 Mon Sep 17 00:00:00 2001 From: James Walker Date: Mon, 1 Oct 2018 12:19:15 -0400 Subject: [PATCH] ruby - beer-song --- ruby/beer-song/README.md | 351 ++++++++++++++++++++++++++++ ruby/beer-song/beer_song.rb | 38 +++ ruby/beer-song/beer_song_test.rb | 383 +++++++++++++++++++++++++++++++ 3 files changed, 772 insertions(+) create mode 100644 ruby/beer-song/README.md create mode 100644 ruby/beer-song/beer_song.rb create mode 100644 ruby/beer-song/beer_song_test.rb diff --git a/ruby/beer-song/README.md b/ruby/beer-song/README.md new file mode 100644 index 0000000..48b84ee --- /dev/null +++ b/ruby/beer-song/README.md @@ -0,0 +1,351 @@ +# 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? + +* * * * + +For installation and learning resources, refer to the +[exercism help page](http://exercism.io/languages/ruby). + +For running the tests provided, you will need the Minitest gem. Open a +terminal window and run the following command to install minitest: + + gem install minitest + +If you would like color output, you can `require 'minitest/pride'` in +the test file, or note the alternative instruction, below, for running +the test file. + +Run the tests from the exercise directory using the following command: + + ruby beer_song_test.rb + +To include color from the command line: + + ruby -r minitest/pride beer_song_test.rb + + +## 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/ruby/beer-song/beer_song.rb b/ruby/beer-song/beer_song.rb new file mode 100644 index 0000000..4e48ebf --- /dev/null +++ b/ruby/beer-song/beer_song.rb @@ -0,0 +1,38 @@ +class BeerSong + def self.recite(bottle_count, times_left) + lyrics = "" + while times_left > 0 + lyrics += "#{number_of_bottles(bottle_count).capitalize} of beer on the wall, #{number_of_bottles(bottle_count)} of beer.\n" + lyrics += number_to_take(bottle_count) + if bottle_count == 0 + bottle_count = 99 + else + bottle_count -= 1 + end + lyrics += ", #{number_of_bottles(bottle_count)} of beer on the wall.\n" + times_left -= 1 + lyrics += "\n" unless times_left == 0 + end + lyrics + end + + def self.number_of_bottles(count) + if count > 1 + "#{count} bottles" + elsif count == 1 + "1 bottle" + else + "no more bottles" + end + end + + def self.number_to_take(count) + if count == 0 + "Go to the store and buy some more" + elsif count == 1 + "Take it down and pass it around" + else + "Take one down and pass it around" + end + end +end diff --git a/ruby/beer-song/beer_song_test.rb b/ruby/beer-song/beer_song_test.rb new file mode 100644 index 0000000..0c0dcd5 --- /dev/null +++ b/ruby/beer-song/beer_song_test.rb @@ -0,0 +1,383 @@ +require 'minitest/autorun' +require_relative 'beer_song' + +# Common test data version: 2.1.0 87a334d +class BeerSongTest < Minitest::Test + def test_first_generic_verse + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(99, 1) + end + + def test_last_generic_verse + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(3, 1) + end + + def test_verse_with_2_bottles + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(2, 1) + end + + def test_verse_with_1_bottle + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(1, 1) + end + + def test_verse_with_0_bottles + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(0, 1) + end + + def test_first_two_verses + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(99, 2) + end + + def test_last_three_verses + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(2, 3) + end + + def test_all_verses + # skip + expected = <<-TEXT.gsub(/^ */, '') + 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. + TEXT + assert_equal expected, BeerSong.recite(99, 100) + end +end