trackler 2.2.1.0 → 2.2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/list-ops/canonical-data.json +27 -11
  4. data/problem-specifications/exercises/rotational-cipher/canonical-data.json +8 -8
  5. data/tracks/clojure/config.json +0 -2
  6. data/tracks/dart/config.json +0 -2
  7. data/tracks/elisp/config.json +0 -2
  8. data/tracks/elixir/config.json +0 -2
  9. data/tracks/erlang/config.json +190 -83
  10. data/tracks/go/config.json +0 -2
  11. data/tracks/groovy/config.json +55 -17
  12. data/tracks/idris/config.json +0 -2
  13. data/tracks/java/POLICIES.md +9 -1
  14. data/tracks/java/exercises/nucleotide-count/src/example/java/{DNA.java → NucleotideCounter.java} +4 -4
  15. data/tracks/java/exercises/nucleotide-count/src/test/java/{NucleotideTest.java → NucleotideCounterTest.java} +21 -21
  16. data/tracks/kotlin/exercises/rotational-cipher/README.md +39 -0
  17. data/tracks/lfe/config.json +0 -2
  18. data/tracks/lisp/config.json +4 -6
  19. data/tracks/lisp/config/exercise_readme.go.tmpl +16 -0
  20. data/tracks/lisp/exercises/allergies/README.md +84 -0
  21. data/tracks/lisp/exercises/anagram/README.md +60 -0
  22. data/tracks/lisp/exercises/atbash-cipher/README.md +81 -0
  23. data/tracks/lisp/exercises/beer-song/README.md +374 -0
  24. data/tracks/lisp/exercises/binary/README.md +82 -0
  25. data/tracks/lisp/exercises/bob/README.md +65 -0
  26. data/tracks/lisp/exercises/crypto-square/README.md +121 -0
  27. data/tracks/lisp/exercises/difference-of-squares/README.md +66 -0
  28. data/tracks/lisp/exercises/etl/README.md +98 -0
  29. data/tracks/lisp/exercises/gigasecond/README.md +58 -0
  30. data/tracks/lisp/exercises/grade-school/README.md +89 -0
  31. data/tracks/lisp/exercises/grains/README.md +81 -0
  32. data/tracks/lisp/exercises/hamming/README.md +89 -0
  33. data/tracks/lisp/exercises/leap/README.md +80 -0
  34. data/tracks/lisp/exercises/meetup/README.md +77 -0
  35. data/tracks/lisp/exercises/nucleotide-count/README.md +80 -0
  36. data/tracks/lisp/exercises/pascals-triangle/README.md +68 -0
  37. data/tracks/lisp/exercises/phone-number/README.md +81 -0
  38. data/tracks/lisp/exercises/prime-factors/README.md +83 -0
  39. data/tracks/lisp/exercises/raindrops/README.md +71 -0
  40. data/tracks/lisp/exercises/rna-transcription/README.md +72 -0
  41. data/tracks/lisp/exercises/robot-name/README.md +69 -0
  42. data/tracks/lisp/exercises/roman-numerals/README.md +96 -0
  43. data/tracks/lisp/exercises/scrabble-score/README.md +91 -0
  44. data/tracks/lisp/exercises/sieve/README.md +81 -0
  45. data/tracks/lisp/exercises/space-age/README.md +71 -0
  46. data/tracks/lisp/exercises/strain/README.md +87 -0
  47. data/tracks/lisp/exercises/triangle/README.md +73 -0
  48. data/tracks/lisp/exercises/trinary/README.md +75 -0
  49. data/tracks/lisp/exercises/word-count/README.md +66 -0
  50. data/tracks/perl5/config.json +0 -2
  51. data/tracks/perl6/config.json +0 -2
  52. data/tracks/php/config.json +0 -2
  53. data/tracks/pony/config.json +33 -0
  54. data/tracks/python/exercises/scale-generator/scale_generator_test.py +1 -1
  55. data/tracks/racket/config.json +0 -2
  56. data/tracks/ruby/config.json +0 -2
  57. data/tracks/rust/.gitignore +0 -1
  58. data/tracks/rust/_test/check-exercises.sh +7 -1
  59. data/tracks/rust/config.json +11 -0
  60. data/tracks/rust/config/maintainers.json +54 -0
  61. data/tracks/rust/exercises/acronym/src/lib.rs +0 -0
  62. data/tracks/rust/exercises/all-your-base/src/lib.rs +35 -0
  63. data/tracks/rust/exercises/allergies/src/lib.rs +0 -0
  64. data/tracks/rust/exercises/alphametics/src/lib.rs +5 -0
  65. data/tracks/rust/exercises/anagram/src/lib.rs +0 -0
  66. data/tracks/rust/exercises/atbash-cipher/src/lib.rs +0 -0
  67. data/tracks/rust/exercises/beer-song/src/lib.rs +0 -0
  68. data/tracks/rust/exercises/bob/src/lib.rs +0 -0
  69. data/tracks/rust/exercises/bowling/src/lib.rs +0 -0
  70. data/tracks/rust/exercises/bracket-push/src/lib.rs +0 -0
  71. data/tracks/rust/exercises/circular-buffer/src/lib.rs +0 -0
  72. data/tracks/rust/exercises/custom-set/src/lib.rs +0 -0
  73. data/tracks/rust/exercises/difference-of-squares/src/lib.rs +0 -0
  74. data/tracks/rust/exercises/dominoes/src/lib.rs +0 -0
  75. data/tracks/rust/exercises/etl/src/lib.rs +0 -0
  76. data/tracks/rust/exercises/forth/src/lib.rs +23 -0
  77. data/tracks/rust/exercises/gigasecond/src/lib.rs +7 -0
  78. data/tracks/rust/exercises/grade-school/src/lib.rs +26 -0
  79. data/tracks/rust/exercises/grains/src/lib.rs +7 -0
  80. data/tracks/rust/exercises/hamming/src/lib.rs +0 -0
  81. data/tracks/rust/exercises/hello-world/src/lib.rs +5 -0
  82. data/tracks/rust/exercises/hexadecimal/src/lib.rs +0 -0
  83. data/tracks/rust/exercises/largest-series-product/src/lib.rs +0 -0
  84. data/tracks/rust/exercises/leap/src/lib.rs +0 -0
  85. data/tracks/rust/exercises/luhn-from/src/lib.rs +0 -0
  86. data/tracks/rust/exercises/luhn-trait/src/lib.rs +0 -0
  87. data/tracks/rust/exercises/luhn/src/lib.rs +0 -0
  88. data/tracks/rust/exercises/minesweeper/src/lib.rs +0 -0
  89. data/tracks/rust/exercises/nucleotide-codons/src/lib.rs +0 -0
  90. data/tracks/rust/exercises/nucleotide-count/src/lib.rs +0 -0
  91. data/tracks/rust/exercises/ocr-numbers/src/lib.rs +7 -0
  92. data/tracks/rust/exercises/pangram/src/lib.rs +0 -0
  93. data/tracks/rust/exercises/parallel-letter-frequency/src/lib.rs +0 -0
  94. data/tracks/rust/exercises/pascals-triangle/src/lib.rs +11 -0
  95. data/tracks/rust/exercises/phone-number/src/lib.rs +0 -0
  96. data/tracks/rust/exercises/pig-latin/src/lib.rs +0 -0
  97. data/tracks/rust/exercises/protein-translation/src/lib.rs +0 -0
  98. data/tracks/rust/exercises/queen-attack/src/lib.rs +0 -0
  99. data/tracks/rust/exercises/raindrops/src/lib.rs +0 -0
  100. data/tracks/rust/exercises/react/src/lib.rs +89 -0
  101. data/tracks/rust/exercises/rectangles/src/lib.rs +0 -0
  102. data/tracks/rust/exercises/rna-transcription/src/lib.rs +0 -0
  103. data/tracks/rust/exercises/robot-name/src/lib.rs +0 -0
  104. data/tracks/rust/exercises/robot-simulator/src/lib.rs +44 -0
  105. data/tracks/rust/exercises/roman-numerals/src/lib.rs +0 -0
  106. data/tracks/rust/exercises/rotational-cipher/src/lib.rs +0 -0
  107. data/tracks/rust/exercises/run-length-encoding/src/lib.rs +0 -0
  108. data/tracks/rust/exercises/say/.meta/hints.md +19 -0
  109. data/tracks/rust/exercises/say/Cargo.lock +4 -0
  110. data/tracks/rust/exercises/say/Cargo.toml +4 -0
  111. data/tracks/rust/exercises/say/README.md +122 -0
  112. data/tracks/rust/exercises/say/example.rs +56 -0
  113. data/tracks/rust/exercises/say/src/lib.rs +4 -0
  114. data/tracks/rust/exercises/say/tests/say.rs +130 -0
  115. data/tracks/rust/exercises/scrabble-score/src/lib.rs +0 -0
  116. data/tracks/rust/exercises/sieve/src/lib.rs +0 -0
  117. data/tracks/rust/exercises/space-age/src/lib.rs +35 -0
  118. data/tracks/rust/exercises/sublist/src/lib.rs +0 -0
  119. data/tracks/rust/exercises/sum-of-multiples/src/lib.rs +0 -0
  120. data/tracks/rust/exercises/tournament/src/lib.rs +0 -0
  121. data/tracks/rust/exercises/triangle/src/lib.rs +0 -0
  122. data/tracks/rust/exercises/variable-length-quantity/src/lib.rs +9 -0
  123. data/tracks/rust/exercises/word-count/src/lib.rs +0 -0
  124. data/tracks/rust/exercises/wordy/src/lib.rs +0 -0
  125. data/tracks/scheme/config.json +0 -2
  126. metadata +45 -4
@@ -0,0 +1,60 @@
1
+ # Anagram
2
+
3
+ Given a word and a list of possible anagrams, select the correct sublist.
4
+
5
+ Given `"listen"` and a list of candidates like `"enlists" "google"
6
+ "inlets" "banana"` the program should return a list containing
7
+ `"inlets"`.
8
+
9
+ ## Setup
10
+
11
+ Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
12
+ get started writing Common Lisp. That page will explain how to install and setup
13
+ a Lisp implementation and how to run the tests.
14
+
15
+ ## Formatting
16
+
17
+ While Common Lisp doesn't care about indentation and layout of code,
18
+ nor whether you use spaces or tabs, this is an important consideration
19
+ for submissions to exercism.io. Excercism.io's code widget cannot
20
+ handle mixing of tab and space characters well so using only spaces is recommended to make
21
+ the code more readable to the human reviewers. Please review your
22
+ editors settings on how to accomplish this. Below are instructions for
23
+ popular editors for Common Lisp.
24
+
25
+ ### VIM
26
+
27
+ Use the following commands to ensure VIM uses only spaces for
28
+ indentation:
29
+
30
+ ```vimscript
31
+ :set tabstop=2
32
+ :set shiftwidth=2
33
+ :set expandtab
34
+ ```
35
+
36
+ (or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
37
+ be added to your `~/.vimrc` file to use it all the time.
38
+
39
+ ### Emacs
40
+
41
+ Emacs is very well suited for editing Common Lisp and has many
42
+ powerful add-on packages available. The only thing that one needs to
43
+ do with a stock emacs to make it work well with exercism.io is to
44
+ evaluate the following code:
45
+
46
+ `(setq indent-tab-mode nil)`
47
+
48
+ This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
49
+ order to have it set whenever Emacs is launched.
50
+
51
+ One suggested add-on for Emacs and Common Lisp is
52
+ [SLIME](https://github.com/slime/slime) which offers tight integration
53
+ with the REPL; making iterative coding and testing very easy.
54
+
55
+ ## Source
56
+
57
+ Inspired by the Extreme Startup game [https://github.com/rchatley/extreme_startup](https://github.com/rchatley/extreme_startup)
58
+
59
+ ## Submitting Incomplete Solutions
60
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,81 @@
1
+ # Atbash Cipher
2
+
3
+ Create an implementation of the atbash cipher, an ancient encryption system created in the Middle East.
4
+
5
+ The Atbash cipher is a simple substitution cipher that relies on
6
+ transposing all the letters in the alphabet such that the resulting
7
+ alphabet is backwards. The first letter is replaced with the last
8
+ letter, the second with the second-last, and so on.
9
+
10
+ An Atbash cipher for the Latin alphabet would be as follows:
11
+
12
+ ```plain
13
+ Plain: abcdefghijklmnopqrstuvwxyz
14
+ Cipher: zyxwvutsrqponmlkjihgfedcba
15
+ ```
16
+
17
+ It is a very weak cipher because it only has one possible key, and it is
18
+ a simple monoalphabetic substitution cipher. However, this may not have
19
+ been an issue in the cipher's time.
20
+
21
+ Ciphertext is written out in groups of fixed length, the traditional group size
22
+ being 5 letters, and punctuation is excluded. This is to make it harder to guess
23
+ things based on word boundaries.
24
+
25
+ ## Examples
26
+ - Encoding `test` gives `gvhg`
27
+ - Decoding `gvhg` gives `test`
28
+ - Decoding `gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt` gives `thequickbrownfoxjumpsoverthelazydog`
29
+
30
+ ## Setup
31
+
32
+ Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
33
+ get started writing Common Lisp. That page will explain how to install and setup
34
+ a Lisp implementation and how to run the tests.
35
+
36
+ ## Formatting
37
+
38
+ While Common Lisp doesn't care about indentation and layout of code,
39
+ nor whether you use spaces or tabs, this is an important consideration
40
+ for submissions to exercism.io. Excercism.io's code widget cannot
41
+ handle mixing of tab and space characters well so using only spaces is recommended to make
42
+ the code more readable to the human reviewers. Please review your
43
+ editors settings on how to accomplish this. Below are instructions for
44
+ popular editors for Common Lisp.
45
+
46
+ ### VIM
47
+
48
+ Use the following commands to ensure VIM uses only spaces for
49
+ indentation:
50
+
51
+ ```vimscript
52
+ :set tabstop=2
53
+ :set shiftwidth=2
54
+ :set expandtab
55
+ ```
56
+
57
+ (or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
58
+ be added to your `~/.vimrc` file to use it all the time.
59
+
60
+ ### Emacs
61
+
62
+ Emacs is very well suited for editing Common Lisp and has many
63
+ powerful add-on packages available. The only thing that one needs to
64
+ do with a stock emacs to make it work well with exercism.io is to
65
+ evaluate the following code:
66
+
67
+ `(setq indent-tab-mode nil)`
68
+
69
+ This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
70
+ order to have it set whenever Emacs is launched.
71
+
72
+ One suggested add-on for Emacs and Common Lisp is
73
+ [SLIME](https://github.com/slime/slime) which offers tight integration
74
+ with the REPL; making iterative coding and testing very easy.
75
+
76
+ ## Source
77
+
78
+ Wikipedia [http://en.wikipedia.org/wiki/Atbash](http://en.wikipedia.org/wiki/Atbash)
79
+
80
+ ## Submitting Incomplete Solutions
81
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,374 @@
1
+ # Beer Song
2
+
3
+ Produce the lyrics to that beloved classic, that field-trip favorite: 99 Bottles of Beer on the Wall.
4
+
5
+ Note that not all verses are identical.
6
+
7
+ ```plain
8
+ 99 bottles of beer on the wall, 99 bottles of beer.
9
+ Take one down and pass it around, 98 bottles of beer on the wall.
10
+
11
+ 98 bottles of beer on the wall, 98 bottles of beer.
12
+ Take one down and pass it around, 97 bottles of beer on the wall.
13
+
14
+ 97 bottles of beer on the wall, 97 bottles of beer.
15
+ Take one down and pass it around, 96 bottles of beer on the wall.
16
+
17
+ 96 bottles of beer on the wall, 96 bottles of beer.
18
+ Take one down and pass it around, 95 bottles of beer on the wall.
19
+
20
+ 95 bottles of beer on the wall, 95 bottles of beer.
21
+ Take one down and pass it around, 94 bottles of beer on the wall.
22
+
23
+ 94 bottles of beer on the wall, 94 bottles of beer.
24
+ Take one down and pass it around, 93 bottles of beer on the wall.
25
+
26
+ 93 bottles of beer on the wall, 93 bottles of beer.
27
+ Take one down and pass it around, 92 bottles of beer on the wall.
28
+
29
+ 92 bottles of beer on the wall, 92 bottles of beer.
30
+ Take one down and pass it around, 91 bottles of beer on the wall.
31
+
32
+ 91 bottles of beer on the wall, 91 bottles of beer.
33
+ Take one down and pass it around, 90 bottles of beer on the wall.
34
+
35
+ 90 bottles of beer on the wall, 90 bottles of beer.
36
+ Take one down and pass it around, 89 bottles of beer on the wall.
37
+
38
+ 89 bottles of beer on the wall, 89 bottles of beer.
39
+ Take one down and pass it around, 88 bottles of beer on the wall.
40
+
41
+ 88 bottles of beer on the wall, 88 bottles of beer.
42
+ Take one down and pass it around, 87 bottles of beer on the wall.
43
+
44
+ 87 bottles of beer on the wall, 87 bottles of beer.
45
+ Take one down and pass it around, 86 bottles of beer on the wall.
46
+
47
+ 86 bottles of beer on the wall, 86 bottles of beer.
48
+ Take one down and pass it around, 85 bottles of beer on the wall.
49
+
50
+ 85 bottles of beer on the wall, 85 bottles of beer.
51
+ Take one down and pass it around, 84 bottles of beer on the wall.
52
+
53
+ 84 bottles of beer on the wall, 84 bottles of beer.
54
+ Take one down and pass it around, 83 bottles of beer on the wall.
55
+
56
+ 83 bottles of beer on the wall, 83 bottles of beer.
57
+ Take one down and pass it around, 82 bottles of beer on the wall.
58
+
59
+ 82 bottles of beer on the wall, 82 bottles of beer.
60
+ Take one down and pass it around, 81 bottles of beer on the wall.
61
+
62
+ 81 bottles of beer on the wall, 81 bottles of beer.
63
+ Take one down and pass it around, 80 bottles of beer on the wall.
64
+
65
+ 80 bottles of beer on the wall, 80 bottles of beer.
66
+ Take one down and pass it around, 79 bottles of beer on the wall.
67
+
68
+ 79 bottles of beer on the wall, 79 bottles of beer.
69
+ Take one down and pass it around, 78 bottles of beer on the wall.
70
+
71
+ 78 bottles of beer on the wall, 78 bottles of beer.
72
+ Take one down and pass it around, 77 bottles of beer on the wall.
73
+
74
+ 77 bottles of beer on the wall, 77 bottles of beer.
75
+ Take one down and pass it around, 76 bottles of beer on the wall.
76
+
77
+ 76 bottles of beer on the wall, 76 bottles of beer.
78
+ Take one down and pass it around, 75 bottles of beer on the wall.
79
+
80
+ 75 bottles of beer on the wall, 75 bottles of beer.
81
+ Take one down and pass it around, 74 bottles of beer on the wall.
82
+
83
+ 74 bottles of beer on the wall, 74 bottles of beer.
84
+ Take one down and pass it around, 73 bottles of beer on the wall.
85
+
86
+ 73 bottles of beer on the wall, 73 bottles of beer.
87
+ Take one down and pass it around, 72 bottles of beer on the wall.
88
+
89
+ 72 bottles of beer on the wall, 72 bottles of beer.
90
+ Take one down and pass it around, 71 bottles of beer on the wall.
91
+
92
+ 71 bottles of beer on the wall, 71 bottles of beer.
93
+ Take one down and pass it around, 70 bottles of beer on the wall.
94
+
95
+ 70 bottles of beer on the wall, 70 bottles of beer.
96
+ Take one down and pass it around, 69 bottles of beer on the wall.
97
+
98
+ 69 bottles of beer on the wall, 69 bottles of beer.
99
+ Take one down and pass it around, 68 bottles of beer on the wall.
100
+
101
+ 68 bottles of beer on the wall, 68 bottles of beer.
102
+ Take one down and pass it around, 67 bottles of beer on the wall.
103
+
104
+ 67 bottles of beer on the wall, 67 bottles of beer.
105
+ Take one down and pass it around, 66 bottles of beer on the wall.
106
+
107
+ 66 bottles of beer on the wall, 66 bottles of beer.
108
+ Take one down and pass it around, 65 bottles of beer on the wall.
109
+
110
+ 65 bottles of beer on the wall, 65 bottles of beer.
111
+ Take one down and pass it around, 64 bottles of beer on the wall.
112
+
113
+ 64 bottles of beer on the wall, 64 bottles of beer.
114
+ Take one down and pass it around, 63 bottles of beer on the wall.
115
+
116
+ 63 bottles of beer on the wall, 63 bottles of beer.
117
+ Take one down and pass it around, 62 bottles of beer on the wall.
118
+
119
+ 62 bottles of beer on the wall, 62 bottles of beer.
120
+ Take one down and pass it around, 61 bottles of beer on the wall.
121
+
122
+ 61 bottles of beer on the wall, 61 bottles of beer.
123
+ Take one down and pass it around, 60 bottles of beer on the wall.
124
+
125
+ 60 bottles of beer on the wall, 60 bottles of beer.
126
+ Take one down and pass it around, 59 bottles of beer on the wall.
127
+
128
+ 59 bottles of beer on the wall, 59 bottles of beer.
129
+ Take one down and pass it around, 58 bottles of beer on the wall.
130
+
131
+ 58 bottles of beer on the wall, 58 bottles of beer.
132
+ Take one down and pass it around, 57 bottles of beer on the wall.
133
+
134
+ 57 bottles of beer on the wall, 57 bottles of beer.
135
+ Take one down and pass it around, 56 bottles of beer on the wall.
136
+
137
+ 56 bottles of beer on the wall, 56 bottles of beer.
138
+ Take one down and pass it around, 55 bottles of beer on the wall.
139
+
140
+ 55 bottles of beer on the wall, 55 bottles of beer.
141
+ Take one down and pass it around, 54 bottles of beer on the wall.
142
+
143
+ 54 bottles of beer on the wall, 54 bottles of beer.
144
+ Take one down and pass it around, 53 bottles of beer on the wall.
145
+
146
+ 53 bottles of beer on the wall, 53 bottles of beer.
147
+ Take one down and pass it around, 52 bottles of beer on the wall.
148
+
149
+ 52 bottles of beer on the wall, 52 bottles of beer.
150
+ Take one down and pass it around, 51 bottles of beer on the wall.
151
+
152
+ 51 bottles of beer on the wall, 51 bottles of beer.
153
+ Take one down and pass it around, 50 bottles of beer on the wall.
154
+
155
+ 50 bottles of beer on the wall, 50 bottles of beer.
156
+ Take one down and pass it around, 49 bottles of beer on the wall.
157
+
158
+ 49 bottles of beer on the wall, 49 bottles of beer.
159
+ Take one down and pass it around, 48 bottles of beer on the wall.
160
+
161
+ 48 bottles of beer on the wall, 48 bottles of beer.
162
+ Take one down and pass it around, 47 bottles of beer on the wall.
163
+
164
+ 47 bottles of beer on the wall, 47 bottles of beer.
165
+ Take one down and pass it around, 46 bottles of beer on the wall.
166
+
167
+ 46 bottles of beer on the wall, 46 bottles of beer.
168
+ Take one down and pass it around, 45 bottles of beer on the wall.
169
+
170
+ 45 bottles of beer on the wall, 45 bottles of beer.
171
+ Take one down and pass it around, 44 bottles of beer on the wall.
172
+
173
+ 44 bottles of beer on the wall, 44 bottles of beer.
174
+ Take one down and pass it around, 43 bottles of beer on the wall.
175
+
176
+ 43 bottles of beer on the wall, 43 bottles of beer.
177
+ Take one down and pass it around, 42 bottles of beer on the wall.
178
+
179
+ 42 bottles of beer on the wall, 42 bottles of beer.
180
+ Take one down and pass it around, 41 bottles of beer on the wall.
181
+
182
+ 41 bottles of beer on the wall, 41 bottles of beer.
183
+ Take one down and pass it around, 40 bottles of beer on the wall.
184
+
185
+ 40 bottles of beer on the wall, 40 bottles of beer.
186
+ Take one down and pass it around, 39 bottles of beer on the wall.
187
+
188
+ 39 bottles of beer on the wall, 39 bottles of beer.
189
+ Take one down and pass it around, 38 bottles of beer on the wall.
190
+
191
+ 38 bottles of beer on the wall, 38 bottles of beer.
192
+ Take one down and pass it around, 37 bottles of beer on the wall.
193
+
194
+ 37 bottles of beer on the wall, 37 bottles of beer.
195
+ Take one down and pass it around, 36 bottles of beer on the wall.
196
+
197
+ 36 bottles of beer on the wall, 36 bottles of beer.
198
+ Take one down and pass it around, 35 bottles of beer on the wall.
199
+
200
+ 35 bottles of beer on the wall, 35 bottles of beer.
201
+ Take one down and pass it around, 34 bottles of beer on the wall.
202
+
203
+ 34 bottles of beer on the wall, 34 bottles of beer.
204
+ Take one down and pass it around, 33 bottles of beer on the wall.
205
+
206
+ 33 bottles of beer on the wall, 33 bottles of beer.
207
+ Take one down and pass it around, 32 bottles of beer on the wall.
208
+
209
+ 32 bottles of beer on the wall, 32 bottles of beer.
210
+ Take one down and pass it around, 31 bottles of beer on the wall.
211
+
212
+ 31 bottles of beer on the wall, 31 bottles of beer.
213
+ Take one down and pass it around, 30 bottles of beer on the wall.
214
+
215
+ 30 bottles of beer on the wall, 30 bottles of beer.
216
+ Take one down and pass it around, 29 bottles of beer on the wall.
217
+
218
+ 29 bottles of beer on the wall, 29 bottles of beer.
219
+ Take one down and pass it around, 28 bottles of beer on the wall.
220
+
221
+ 28 bottles of beer on the wall, 28 bottles of beer.
222
+ Take one down and pass it around, 27 bottles of beer on the wall.
223
+
224
+ 27 bottles of beer on the wall, 27 bottles of beer.
225
+ Take one down and pass it around, 26 bottles of beer on the wall.
226
+
227
+ 26 bottles of beer on the wall, 26 bottles of beer.
228
+ Take one down and pass it around, 25 bottles of beer on the wall.
229
+
230
+ 25 bottles of beer on the wall, 25 bottles of beer.
231
+ Take one down and pass it around, 24 bottles of beer on the wall.
232
+
233
+ 24 bottles of beer on the wall, 24 bottles of beer.
234
+ Take one down and pass it around, 23 bottles of beer on the wall.
235
+
236
+ 23 bottles of beer on the wall, 23 bottles of beer.
237
+ Take one down and pass it around, 22 bottles of beer on the wall.
238
+
239
+ 22 bottles of beer on the wall, 22 bottles of beer.
240
+ Take one down and pass it around, 21 bottles of beer on the wall.
241
+
242
+ 21 bottles of beer on the wall, 21 bottles of beer.
243
+ Take one down and pass it around, 20 bottles of beer on the wall.
244
+
245
+ 20 bottles of beer on the wall, 20 bottles of beer.
246
+ Take one down and pass it around, 19 bottles of beer on the wall.
247
+
248
+ 19 bottles of beer on the wall, 19 bottles of beer.
249
+ Take one down and pass it around, 18 bottles of beer on the wall.
250
+
251
+ 18 bottles of beer on the wall, 18 bottles of beer.
252
+ Take one down and pass it around, 17 bottles of beer on the wall.
253
+
254
+ 17 bottles of beer on the wall, 17 bottles of beer.
255
+ Take one down and pass it around, 16 bottles of beer on the wall.
256
+
257
+ 16 bottles of beer on the wall, 16 bottles of beer.
258
+ Take one down and pass it around, 15 bottles of beer on the wall.
259
+
260
+ 15 bottles of beer on the wall, 15 bottles of beer.
261
+ Take one down and pass it around, 14 bottles of beer on the wall.
262
+
263
+ 14 bottles of beer on the wall, 14 bottles of beer.
264
+ Take one down and pass it around, 13 bottles of beer on the wall.
265
+
266
+ 13 bottles of beer on the wall, 13 bottles of beer.
267
+ Take one down and pass it around, 12 bottles of beer on the wall.
268
+
269
+ 12 bottles of beer on the wall, 12 bottles of beer.
270
+ Take one down and pass it around, 11 bottles of beer on the wall.
271
+
272
+ 11 bottles of beer on the wall, 11 bottles of beer.
273
+ Take one down and pass it around, 10 bottles of beer on the wall.
274
+
275
+ 10 bottles of beer on the wall, 10 bottles of beer.
276
+ Take one down and pass it around, 9 bottles of beer on the wall.
277
+
278
+ 9 bottles of beer on the wall, 9 bottles of beer.
279
+ Take one down and pass it around, 8 bottles of beer on the wall.
280
+
281
+ 8 bottles of beer on the wall, 8 bottles of beer.
282
+ Take one down and pass it around, 7 bottles of beer on the wall.
283
+
284
+ 7 bottles of beer on the wall, 7 bottles of beer.
285
+ Take one down and pass it around, 6 bottles of beer on the wall.
286
+
287
+ 6 bottles of beer on the wall, 6 bottles of beer.
288
+ Take one down and pass it around, 5 bottles of beer on the wall.
289
+
290
+ 5 bottles of beer on the wall, 5 bottles of beer.
291
+ Take one down and pass it around, 4 bottles of beer on the wall.
292
+
293
+ 4 bottles of beer on the wall, 4 bottles of beer.
294
+ Take one down and pass it around, 3 bottles of beer on the wall.
295
+
296
+ 3 bottles of beer on the wall, 3 bottles of beer.
297
+ Take one down and pass it around, 2 bottles of beer on the wall.
298
+
299
+ 2 bottles of beer on the wall, 2 bottles of beer.
300
+ Take one down and pass it around, 1 bottle of beer on the wall.
301
+
302
+ 1 bottle of beer on the wall, 1 bottle of beer.
303
+ Take it down and pass it around, no more bottles of beer on the wall.
304
+
305
+ No more bottles of beer on the wall, no more bottles of beer.
306
+ Go to the store and buy some more, 99 bottles of beer on the wall.
307
+ ```
308
+
309
+ ## For bonus points
310
+
311
+ Did you get the tests passing and the code clean? If you want to, these
312
+ are some additional things you could try:
313
+
314
+ * Remove as much duplication as you possibly can.
315
+ * Optimize for readability, even if it means introducing duplication.
316
+ * If you've removed all the duplication, do you have a lot of
317
+ conditionals? Try replacing the conditionals with polymorphism, if it
318
+ applies in this language. How readable is it?
319
+
320
+ Then please share your thoughts in a comment on the submission. Did this
321
+ experiment make the code better? Worse? Did you learn anything from it?
322
+
323
+ ## Setup
324
+
325
+ Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
326
+ get started writing Common Lisp. That page will explain how to install and setup
327
+ a Lisp implementation and how to run the tests.
328
+
329
+ ## Formatting
330
+
331
+ While Common Lisp doesn't care about indentation and layout of code,
332
+ nor whether you use spaces or tabs, this is an important consideration
333
+ for submissions to exercism.io. Excercism.io's code widget cannot
334
+ handle mixing of tab and space characters well so using only spaces is recommended to make
335
+ the code more readable to the human reviewers. Please review your
336
+ editors settings on how to accomplish this. Below are instructions for
337
+ popular editors for Common Lisp.
338
+
339
+ ### VIM
340
+
341
+ Use the following commands to ensure VIM uses only spaces for
342
+ indentation:
343
+
344
+ ```vimscript
345
+ :set tabstop=2
346
+ :set shiftwidth=2
347
+ :set expandtab
348
+ ```
349
+
350
+ (or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
351
+ be added to your `~/.vimrc` file to use it all the time.
352
+
353
+ ### Emacs
354
+
355
+ Emacs is very well suited for editing Common Lisp and has many
356
+ powerful add-on packages available. The only thing that one needs to
357
+ do with a stock emacs to make it work well with exercism.io is to
358
+ evaluate the following code:
359
+
360
+ `(setq indent-tab-mode nil)`
361
+
362
+ This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
363
+ order to have it set whenever Emacs is launched.
364
+
365
+ One suggested add-on for Emacs and Common Lisp is
366
+ [SLIME](https://github.com/slime/slime) which offers tight integration
367
+ with the REPL; making iterative coding and testing very easy.
368
+
369
+ ## Source
370
+
371
+ Learn to Program by Chris Pine [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
372
+
373
+ ## Submitting Incomplete Solutions
374
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.