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.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/list-ops/canonical-data.json +27 -11
- data/problem-specifications/exercises/rotational-cipher/canonical-data.json +8 -8
- data/tracks/clojure/config.json +0 -2
- data/tracks/dart/config.json +0 -2
- data/tracks/elisp/config.json +0 -2
- data/tracks/elixir/config.json +0 -2
- data/tracks/erlang/config.json +190 -83
- data/tracks/go/config.json +0 -2
- data/tracks/groovy/config.json +55 -17
- data/tracks/idris/config.json +0 -2
- data/tracks/java/POLICIES.md +9 -1
- data/tracks/java/exercises/nucleotide-count/src/example/java/{DNA.java → NucleotideCounter.java} +4 -4
- data/tracks/java/exercises/nucleotide-count/src/test/java/{NucleotideTest.java → NucleotideCounterTest.java} +21 -21
- data/tracks/kotlin/exercises/rotational-cipher/README.md +39 -0
- data/tracks/lfe/config.json +0 -2
- data/tracks/lisp/config.json +4 -6
- data/tracks/lisp/config/exercise_readme.go.tmpl +16 -0
- data/tracks/lisp/exercises/allergies/README.md +84 -0
- data/tracks/lisp/exercises/anagram/README.md +60 -0
- data/tracks/lisp/exercises/atbash-cipher/README.md +81 -0
- data/tracks/lisp/exercises/beer-song/README.md +374 -0
- data/tracks/lisp/exercises/binary/README.md +82 -0
- data/tracks/lisp/exercises/bob/README.md +65 -0
- data/tracks/lisp/exercises/crypto-square/README.md +121 -0
- data/tracks/lisp/exercises/difference-of-squares/README.md +66 -0
- data/tracks/lisp/exercises/etl/README.md +98 -0
- data/tracks/lisp/exercises/gigasecond/README.md +58 -0
- data/tracks/lisp/exercises/grade-school/README.md +89 -0
- data/tracks/lisp/exercises/grains/README.md +81 -0
- data/tracks/lisp/exercises/hamming/README.md +89 -0
- data/tracks/lisp/exercises/leap/README.md +80 -0
- data/tracks/lisp/exercises/meetup/README.md +77 -0
- data/tracks/lisp/exercises/nucleotide-count/README.md +80 -0
- data/tracks/lisp/exercises/pascals-triangle/README.md +68 -0
- data/tracks/lisp/exercises/phone-number/README.md +81 -0
- data/tracks/lisp/exercises/prime-factors/README.md +83 -0
- data/tracks/lisp/exercises/raindrops/README.md +71 -0
- data/tracks/lisp/exercises/rna-transcription/README.md +72 -0
- data/tracks/lisp/exercises/robot-name/README.md +69 -0
- data/tracks/lisp/exercises/roman-numerals/README.md +96 -0
- data/tracks/lisp/exercises/scrabble-score/README.md +91 -0
- data/tracks/lisp/exercises/sieve/README.md +81 -0
- data/tracks/lisp/exercises/space-age/README.md +71 -0
- data/tracks/lisp/exercises/strain/README.md +87 -0
- data/tracks/lisp/exercises/triangle/README.md +73 -0
- data/tracks/lisp/exercises/trinary/README.md +75 -0
- data/tracks/lisp/exercises/word-count/README.md +66 -0
- data/tracks/perl5/config.json +0 -2
- data/tracks/perl6/config.json +0 -2
- data/tracks/php/config.json +0 -2
- data/tracks/pony/config.json +33 -0
- data/tracks/python/exercises/scale-generator/scale_generator_test.py +1 -1
- data/tracks/racket/config.json +0 -2
- data/tracks/ruby/config.json +0 -2
- data/tracks/rust/.gitignore +0 -1
- data/tracks/rust/_test/check-exercises.sh +7 -1
- data/tracks/rust/config.json +11 -0
- data/tracks/rust/config/maintainers.json +54 -0
- data/tracks/rust/exercises/acronym/src/lib.rs +0 -0
- data/tracks/rust/exercises/all-your-base/src/lib.rs +35 -0
- data/tracks/rust/exercises/allergies/src/lib.rs +0 -0
- data/tracks/rust/exercises/alphametics/src/lib.rs +5 -0
- data/tracks/rust/exercises/anagram/src/lib.rs +0 -0
- data/tracks/rust/exercises/atbash-cipher/src/lib.rs +0 -0
- data/tracks/rust/exercises/beer-song/src/lib.rs +0 -0
- data/tracks/rust/exercises/bob/src/lib.rs +0 -0
- data/tracks/rust/exercises/bowling/src/lib.rs +0 -0
- data/tracks/rust/exercises/bracket-push/src/lib.rs +0 -0
- data/tracks/rust/exercises/circular-buffer/src/lib.rs +0 -0
- data/tracks/rust/exercises/custom-set/src/lib.rs +0 -0
- data/tracks/rust/exercises/difference-of-squares/src/lib.rs +0 -0
- data/tracks/rust/exercises/dominoes/src/lib.rs +0 -0
- data/tracks/rust/exercises/etl/src/lib.rs +0 -0
- data/tracks/rust/exercises/forth/src/lib.rs +23 -0
- data/tracks/rust/exercises/gigasecond/src/lib.rs +7 -0
- data/tracks/rust/exercises/grade-school/src/lib.rs +26 -0
- data/tracks/rust/exercises/grains/src/lib.rs +7 -0
- data/tracks/rust/exercises/hamming/src/lib.rs +0 -0
- data/tracks/rust/exercises/hello-world/src/lib.rs +5 -0
- data/tracks/rust/exercises/hexadecimal/src/lib.rs +0 -0
- data/tracks/rust/exercises/largest-series-product/src/lib.rs +0 -0
- data/tracks/rust/exercises/leap/src/lib.rs +0 -0
- data/tracks/rust/exercises/luhn-from/src/lib.rs +0 -0
- data/tracks/rust/exercises/luhn-trait/src/lib.rs +0 -0
- data/tracks/rust/exercises/luhn/src/lib.rs +0 -0
- data/tracks/rust/exercises/minesweeper/src/lib.rs +0 -0
- data/tracks/rust/exercises/nucleotide-codons/src/lib.rs +0 -0
- data/tracks/rust/exercises/nucleotide-count/src/lib.rs +0 -0
- data/tracks/rust/exercises/ocr-numbers/src/lib.rs +7 -0
- data/tracks/rust/exercises/pangram/src/lib.rs +0 -0
- data/tracks/rust/exercises/parallel-letter-frequency/src/lib.rs +0 -0
- data/tracks/rust/exercises/pascals-triangle/src/lib.rs +11 -0
- data/tracks/rust/exercises/phone-number/src/lib.rs +0 -0
- data/tracks/rust/exercises/pig-latin/src/lib.rs +0 -0
- data/tracks/rust/exercises/protein-translation/src/lib.rs +0 -0
- data/tracks/rust/exercises/queen-attack/src/lib.rs +0 -0
- data/tracks/rust/exercises/raindrops/src/lib.rs +0 -0
- data/tracks/rust/exercises/react/src/lib.rs +89 -0
- data/tracks/rust/exercises/rectangles/src/lib.rs +0 -0
- data/tracks/rust/exercises/rna-transcription/src/lib.rs +0 -0
- data/tracks/rust/exercises/robot-name/src/lib.rs +0 -0
- data/tracks/rust/exercises/robot-simulator/src/lib.rs +44 -0
- data/tracks/rust/exercises/roman-numerals/src/lib.rs +0 -0
- data/tracks/rust/exercises/rotational-cipher/src/lib.rs +0 -0
- data/tracks/rust/exercises/run-length-encoding/src/lib.rs +0 -0
- data/tracks/rust/exercises/say/.meta/hints.md +19 -0
- data/tracks/rust/exercises/say/Cargo.lock +4 -0
- data/tracks/rust/exercises/say/Cargo.toml +4 -0
- data/tracks/rust/exercises/say/README.md +122 -0
- data/tracks/rust/exercises/say/example.rs +56 -0
- data/tracks/rust/exercises/say/src/lib.rs +4 -0
- data/tracks/rust/exercises/say/tests/say.rs +130 -0
- data/tracks/rust/exercises/scrabble-score/src/lib.rs +0 -0
- data/tracks/rust/exercises/sieve/src/lib.rs +0 -0
- data/tracks/rust/exercises/space-age/src/lib.rs +35 -0
- data/tracks/rust/exercises/sublist/src/lib.rs +0 -0
- data/tracks/rust/exercises/sum-of-multiples/src/lib.rs +0 -0
- data/tracks/rust/exercises/tournament/src/lib.rs +0 -0
- data/tracks/rust/exercises/triangle/src/lib.rs +0 -0
- data/tracks/rust/exercises/variable-length-quantity/src/lib.rs +9 -0
- data/tracks/rust/exercises/word-count/src/lib.rs +0 -0
- data/tracks/rust/exercises/wordy/src/lib.rs +0 -0
- data/tracks/scheme/config.json +0 -2
- metadata +45 -4
@@ -0,0 +1,89 @@
|
|
1
|
+
# Grade School
|
2
|
+
|
3
|
+
Given students' names along with the grade that they are in, create a roster
|
4
|
+
for the school.
|
5
|
+
|
6
|
+
In the end, you should be able to:
|
7
|
+
|
8
|
+
- Add a student's name to the roster for a grade
|
9
|
+
- "Add Jim to grade 2."
|
10
|
+
- "OK."
|
11
|
+
- Get a list of all students enrolled in a grade
|
12
|
+
- "Which students are in grade 2?"
|
13
|
+
- "We've only got Jim just now."
|
14
|
+
- Get a sorted list of all students in all grades. Grades should sort
|
15
|
+
as 1, 2, 3, etc., and students within a grade should be sorted
|
16
|
+
alphabetically by name.
|
17
|
+
- "Who all is enrolled in school right now?"
|
18
|
+
- "Grade 1: Anna, Barb, and Charlie. Grade 2: Alex, Peter, and Zoe.
|
19
|
+
Grade 3…"
|
20
|
+
|
21
|
+
Note that all our students only have one name. (It's a small town, what
|
22
|
+
do you want?)
|
23
|
+
|
24
|
+
|
25
|
+
## For bonus points
|
26
|
+
|
27
|
+
Did you get the tests passing and the code clean? If you want to, these
|
28
|
+
are some additional things you could try:
|
29
|
+
|
30
|
+
- If you're working in a language with mutable data structures and your
|
31
|
+
implementation allows outside code to mutate the school's internal DB
|
32
|
+
directly, see if you can prevent this. Feel free to introduce additional
|
33
|
+
tests.
|
34
|
+
|
35
|
+
Then please share your thoughts in a comment on the submission. Did this
|
36
|
+
experiment make the code better? Worse? Did you learn anything from it?
|
37
|
+
|
38
|
+
## Setup
|
39
|
+
|
40
|
+
Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
|
41
|
+
get started writing Common Lisp. That page will explain how to install and setup
|
42
|
+
a Lisp implementation and how to run the tests.
|
43
|
+
|
44
|
+
## Formatting
|
45
|
+
|
46
|
+
While Common Lisp doesn't care about indentation and layout of code,
|
47
|
+
nor whether you use spaces or tabs, this is an important consideration
|
48
|
+
for submissions to exercism.io. Excercism.io's code widget cannot
|
49
|
+
handle mixing of tab and space characters well so using only spaces is recommended to make
|
50
|
+
the code more readable to the human reviewers. Please review your
|
51
|
+
editors settings on how to accomplish this. Below are instructions for
|
52
|
+
popular editors for Common Lisp.
|
53
|
+
|
54
|
+
### VIM
|
55
|
+
|
56
|
+
Use the following commands to ensure VIM uses only spaces for
|
57
|
+
indentation:
|
58
|
+
|
59
|
+
```vimscript
|
60
|
+
:set tabstop=2
|
61
|
+
:set shiftwidth=2
|
62
|
+
:set expandtab
|
63
|
+
```
|
64
|
+
|
65
|
+
(or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
|
66
|
+
be added to your `~/.vimrc` file to use it all the time.
|
67
|
+
|
68
|
+
### Emacs
|
69
|
+
|
70
|
+
Emacs is very well suited for editing Common Lisp and has many
|
71
|
+
powerful add-on packages available. The only thing that one needs to
|
72
|
+
do with a stock emacs to make it work well with exercism.io is to
|
73
|
+
evaluate the following code:
|
74
|
+
|
75
|
+
`(setq indent-tab-mode nil)`
|
76
|
+
|
77
|
+
This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
|
78
|
+
order to have it set whenever Emacs is launched.
|
79
|
+
|
80
|
+
One suggested add-on for Emacs and Common Lisp is
|
81
|
+
[SLIME](https://github.com/slime/slime) which offers tight integration
|
82
|
+
with the REPL; making iterative coding and testing very easy.
|
83
|
+
|
84
|
+
## Source
|
85
|
+
|
86
|
+
A pairing session with Phil Battos at gSchool [http://gschool.it](http://gschool.it)
|
87
|
+
|
88
|
+
## Submitting Incomplete Solutions
|
89
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# Grains
|
2
|
+
|
3
|
+
Calculate the number of grains of wheat on a chessboard given that the number
|
4
|
+
on each square doubles.
|
5
|
+
|
6
|
+
There once was a wise servant who saved the life of a prince. The king
|
7
|
+
promised to pay whatever the servant could dream up. Knowing that the
|
8
|
+
king loved chess, the servant told the king he would like to have grains
|
9
|
+
of wheat. One grain on the first square of a chess board. Two grains on
|
10
|
+
the next. Four on the third, and so on.
|
11
|
+
|
12
|
+
There are 64 squares on a chessboard.
|
13
|
+
|
14
|
+
Write code that shows:
|
15
|
+
- how many grains were on each square, and
|
16
|
+
- the total number of grains
|
17
|
+
|
18
|
+
|
19
|
+
## For bonus points
|
20
|
+
|
21
|
+
Did you get the tests passing and the code clean? If you want to, these
|
22
|
+
are some additional things you could try:
|
23
|
+
|
24
|
+
- Optimize for speed.
|
25
|
+
- Optimize for readability.
|
26
|
+
|
27
|
+
Then please share your thoughts in a comment on the submission. Did this
|
28
|
+
experiment make the code better? Worse? Did you learn anything from it?
|
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
|
+
JavaRanch Cattle Drive, exercise 6 [http://www.javaranch.com/grains.jsp](http://www.javaranch.com/grains.jsp)
|
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,89 @@
|
|
1
|
+
# Hamming
|
2
|
+
|
3
|
+
Calculate the Hamming difference between two DNA strands.
|
4
|
+
|
5
|
+
A mutation is simply a mistake that occurs during the creation or
|
6
|
+
copying of a nucleic acid, in particular DNA. Because nucleic acids are
|
7
|
+
vital to cellular functions, mutations tend to cause a ripple effect
|
8
|
+
throughout the cell. Although mutations are technically mistakes, a very
|
9
|
+
rare mutation may equip the cell with a beneficial attribute. In fact,
|
10
|
+
the macro effects of evolution are attributable by the accumulated
|
11
|
+
result of beneficial microscopic mutations over many generations.
|
12
|
+
|
13
|
+
The simplest and most common type of nucleic acid mutation is a point
|
14
|
+
mutation, which replaces one base with another at a single nucleotide.
|
15
|
+
|
16
|
+
By counting the number of differences between two homologous DNA strands
|
17
|
+
taken from different genomes with a common ancestor, we get a measure of
|
18
|
+
the minimum number of point mutations that could have occurred on the
|
19
|
+
evolutionary path between the two strands.
|
20
|
+
|
21
|
+
This is called the 'Hamming distance'.
|
22
|
+
|
23
|
+
It is found by comparing two DNA strands and counting how many of the
|
24
|
+
nucleotides are different from their equivalent in the other string.
|
25
|
+
|
26
|
+
GAGCCTACTAACGGGAT
|
27
|
+
CATCGTAATGACGGCCT
|
28
|
+
^ ^ ^ ^ ^ ^^
|
29
|
+
|
30
|
+
The Hamming distance between these two DNA strands is 7.
|
31
|
+
|
32
|
+
# Implementation notes
|
33
|
+
|
34
|
+
The Hamming distance is only defined for sequences of equal length. This means
|
35
|
+
that based on the definition, each language could deal with getting sequences
|
36
|
+
of equal length differently.
|
37
|
+
|
38
|
+
## Setup
|
39
|
+
|
40
|
+
Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
|
41
|
+
get started writing Common Lisp. That page will explain how to install and setup
|
42
|
+
a Lisp implementation and how to run the tests.
|
43
|
+
|
44
|
+
## Formatting
|
45
|
+
|
46
|
+
While Common Lisp doesn't care about indentation and layout of code,
|
47
|
+
nor whether you use spaces or tabs, this is an important consideration
|
48
|
+
for submissions to exercism.io. Excercism.io's code widget cannot
|
49
|
+
handle mixing of tab and space characters well so using only spaces is recommended to make
|
50
|
+
the code more readable to the human reviewers. Please review your
|
51
|
+
editors settings on how to accomplish this. Below are instructions for
|
52
|
+
popular editors for Common Lisp.
|
53
|
+
|
54
|
+
### VIM
|
55
|
+
|
56
|
+
Use the following commands to ensure VIM uses only spaces for
|
57
|
+
indentation:
|
58
|
+
|
59
|
+
```vimscript
|
60
|
+
:set tabstop=2
|
61
|
+
:set shiftwidth=2
|
62
|
+
:set expandtab
|
63
|
+
```
|
64
|
+
|
65
|
+
(or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
|
66
|
+
be added to your `~/.vimrc` file to use it all the time.
|
67
|
+
|
68
|
+
### Emacs
|
69
|
+
|
70
|
+
Emacs is very well suited for editing Common Lisp and has many
|
71
|
+
powerful add-on packages available. The only thing that one needs to
|
72
|
+
do with a stock emacs to make it work well with exercism.io is to
|
73
|
+
evaluate the following code:
|
74
|
+
|
75
|
+
`(setq indent-tab-mode nil)`
|
76
|
+
|
77
|
+
This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
|
78
|
+
order to have it set whenever Emacs is launched.
|
79
|
+
|
80
|
+
One suggested add-on for Emacs and Common Lisp is
|
81
|
+
[SLIME](https://github.com/slime/slime) which offers tight integration
|
82
|
+
with the REPL; making iterative coding and testing very easy.
|
83
|
+
|
84
|
+
## Source
|
85
|
+
|
86
|
+
The Calculating Point Mutations problem at Rosalind [http://rosalind.info/problems/hamm/](http://rosalind.info/problems/hamm/)
|
87
|
+
|
88
|
+
## Submitting Incomplete Solutions
|
89
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Leap
|
2
|
+
|
3
|
+
Given a year, report if it is a leap year.
|
4
|
+
|
5
|
+
The tricky thing here is that a leap year in the Gregorian calendar occurs:
|
6
|
+
|
7
|
+
```plain
|
8
|
+
on every year that is evenly divisible by 4
|
9
|
+
except every year that is evenly divisible by 100
|
10
|
+
unless the year is also evenly divisible by 400
|
11
|
+
```
|
12
|
+
|
13
|
+
For example, 1997 is not a leap year, but 1996 is. 1900 is not a leap
|
14
|
+
year, but 2000 is.
|
15
|
+
|
16
|
+
If your language provides a method in the standard library that does
|
17
|
+
this look-up, pretend it doesn't exist and implement it yourself.
|
18
|
+
|
19
|
+
## Notes
|
20
|
+
|
21
|
+
Though our exercise adopts some very simple rules, there is more to
|
22
|
+
learn!
|
23
|
+
|
24
|
+
For a delightful, four minute explanation of the whole leap year
|
25
|
+
phenomenon, go watch [this youtube video][video].
|
26
|
+
|
27
|
+
[video]: http://www.youtube.com/watch?v=xX96xng7sAE
|
28
|
+
|
29
|
+
## Setup
|
30
|
+
|
31
|
+
Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
|
32
|
+
get started writing Common Lisp. That page will explain how to install and setup
|
33
|
+
a Lisp implementation and how to run the tests.
|
34
|
+
|
35
|
+
## Formatting
|
36
|
+
|
37
|
+
While Common Lisp doesn't care about indentation and layout of code,
|
38
|
+
nor whether you use spaces or tabs, this is an important consideration
|
39
|
+
for submissions to exercism.io. Excercism.io's code widget cannot
|
40
|
+
handle mixing of tab and space characters well so using only spaces is recommended to make
|
41
|
+
the code more readable to the human reviewers. Please review your
|
42
|
+
editors settings on how to accomplish this. Below are instructions for
|
43
|
+
popular editors for Common Lisp.
|
44
|
+
|
45
|
+
### VIM
|
46
|
+
|
47
|
+
Use the following commands to ensure VIM uses only spaces for
|
48
|
+
indentation:
|
49
|
+
|
50
|
+
```vimscript
|
51
|
+
:set tabstop=2
|
52
|
+
:set shiftwidth=2
|
53
|
+
:set expandtab
|
54
|
+
```
|
55
|
+
|
56
|
+
(or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
|
57
|
+
be added to your `~/.vimrc` file to use it all the time.
|
58
|
+
|
59
|
+
### Emacs
|
60
|
+
|
61
|
+
Emacs is very well suited for editing Common Lisp and has many
|
62
|
+
powerful add-on packages available. The only thing that one needs to
|
63
|
+
do with a stock emacs to make it work well with exercism.io is to
|
64
|
+
evaluate the following code:
|
65
|
+
|
66
|
+
`(setq indent-tab-mode nil)`
|
67
|
+
|
68
|
+
This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
|
69
|
+
order to have it set whenever Emacs is launched.
|
70
|
+
|
71
|
+
One suggested add-on for Emacs and Common Lisp is
|
72
|
+
[SLIME](https://github.com/slime/slime) which offers tight integration
|
73
|
+
with the REPL; making iterative coding and testing very easy.
|
74
|
+
|
75
|
+
## Source
|
76
|
+
|
77
|
+
JavaRanch Cattle Drive, exercise 3 [http://www.javaranch.com/leap.jsp](http://www.javaranch.com/leap.jsp)
|
78
|
+
|
79
|
+
## Submitting Incomplete Solutions
|
80
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,77 @@
|
|
1
|
+
# Meetup
|
2
|
+
|
3
|
+
Calculate the date of meetups.
|
4
|
+
|
5
|
+
Typically meetups happen on the same day of the week. In this exercise, you will take
|
6
|
+
a description of a meetup date, and return the actual meetup date.
|
7
|
+
|
8
|
+
Examples of general descriptions are:
|
9
|
+
|
10
|
+
- the first Monday of January 2017
|
11
|
+
- the third Tuesday of January 2017
|
12
|
+
- the Wednesteenth of January 2017
|
13
|
+
- the last Thursday of January 2017
|
14
|
+
|
15
|
+
Note that "Monteenth", "Tuesteenth", etc are all made up words. There
|
16
|
+
was a meetup whose members realized that there are exactly 7 numbered days in a month that
|
17
|
+
end in '-teenth'. Therefore, one is guaranteed that each day of the week
|
18
|
+
(Monday, Tuesday, ...) will have exactly one date that is named with '-teenth'
|
19
|
+
in every month.
|
20
|
+
|
21
|
+
Given examples of a meetup dates, each containing a month, day, year, and descriptor
|
22
|
+
(first, second, teenth, etc), calculate the date of the actual meetup.
|
23
|
+
For example, if given "First Monday of January 2017", the correct meetup date is 2017/1/2
|
24
|
+
|
25
|
+
|
26
|
+
## Setup
|
27
|
+
|
28
|
+
Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
|
29
|
+
get started writing Common Lisp. That page will explain how to install and setup
|
30
|
+
a Lisp implementation and how to run the tests.
|
31
|
+
|
32
|
+
## Formatting
|
33
|
+
|
34
|
+
While Common Lisp doesn't care about indentation and layout of code,
|
35
|
+
nor whether you use spaces or tabs, this is an important consideration
|
36
|
+
for submissions to exercism.io. Excercism.io's code widget cannot
|
37
|
+
handle mixing of tab and space characters well so using only spaces is recommended to make
|
38
|
+
the code more readable to the human reviewers. Please review your
|
39
|
+
editors settings on how to accomplish this. Below are instructions for
|
40
|
+
popular editors for Common Lisp.
|
41
|
+
|
42
|
+
### VIM
|
43
|
+
|
44
|
+
Use the following commands to ensure VIM uses only spaces for
|
45
|
+
indentation:
|
46
|
+
|
47
|
+
```vimscript
|
48
|
+
:set tabstop=2
|
49
|
+
:set shiftwidth=2
|
50
|
+
:set expandtab
|
51
|
+
```
|
52
|
+
|
53
|
+
(or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
|
54
|
+
be added to your `~/.vimrc` file to use it all the time.
|
55
|
+
|
56
|
+
### Emacs
|
57
|
+
|
58
|
+
Emacs is very well suited for editing Common Lisp and has many
|
59
|
+
powerful add-on packages available. The only thing that one needs to
|
60
|
+
do with a stock emacs to make it work well with exercism.io is to
|
61
|
+
evaluate the following code:
|
62
|
+
|
63
|
+
`(setq indent-tab-mode nil)`
|
64
|
+
|
65
|
+
This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
|
66
|
+
order to have it set whenever Emacs is launched.
|
67
|
+
|
68
|
+
One suggested add-on for Emacs and Common Lisp is
|
69
|
+
[SLIME](https://github.com/slime/slime) which offers tight integration
|
70
|
+
with the REPL; making iterative coding and testing very easy.
|
71
|
+
|
72
|
+
## Source
|
73
|
+
|
74
|
+
Jeremy Hinegardner mentioned a Boulder meetup that happens on the Wednesteenth of every month [https://twitter.com/copiousfreetime](https://twitter.com/copiousfreetime)
|
75
|
+
|
76
|
+
## Submitting Incomplete Solutions
|
77
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# Nucleotide Count
|
2
|
+
|
3
|
+
Given a DNA string, compute how many times each nucleotide occurs in the string.
|
4
|
+
|
5
|
+
DNA is represented by an alphabet of the following symbols: 'A', 'C',
|
6
|
+
'G', and 'T'.
|
7
|
+
|
8
|
+
Each symbol represents a nucleotide, which is a fancy name for the
|
9
|
+
particular molecules that happen to make up a large part of DNA.
|
10
|
+
|
11
|
+
Shortest intro to biochemistry EVAR:
|
12
|
+
|
13
|
+
- twigs are to birds nests as
|
14
|
+
- nucleotides are to DNA and RNA as
|
15
|
+
- amino acids are to proteins as
|
16
|
+
- sugar is to starch as
|
17
|
+
- oh crap lipids
|
18
|
+
|
19
|
+
I'm not going to talk about lipids because they're crazy complex.
|
20
|
+
|
21
|
+
So back to nucleotides.
|
22
|
+
|
23
|
+
DNA contains four types of them: adenine (`A`), cytosine (`C`), guanine
|
24
|
+
(`G`), and thymine (`T`).
|
25
|
+
|
26
|
+
RNA contains a slightly different set of nucleotides, but we don't care
|
27
|
+
about that for now.
|
28
|
+
|
29
|
+
## Setup
|
30
|
+
|
31
|
+
Check out [Exercism Help](http://exercism.io/languages/lisp) for instructions to
|
32
|
+
get started writing Common Lisp. That page will explain how to install and setup
|
33
|
+
a Lisp implementation and how to run the tests.
|
34
|
+
|
35
|
+
## Formatting
|
36
|
+
|
37
|
+
While Common Lisp doesn't care about indentation and layout of code,
|
38
|
+
nor whether you use spaces or tabs, this is an important consideration
|
39
|
+
for submissions to exercism.io. Excercism.io's code widget cannot
|
40
|
+
handle mixing of tab and space characters well so using only spaces is recommended to make
|
41
|
+
the code more readable to the human reviewers. Please review your
|
42
|
+
editors settings on how to accomplish this. Below are instructions for
|
43
|
+
popular editors for Common Lisp.
|
44
|
+
|
45
|
+
### VIM
|
46
|
+
|
47
|
+
Use the following commands to ensure VIM uses only spaces for
|
48
|
+
indentation:
|
49
|
+
|
50
|
+
```vimscript
|
51
|
+
:set tabstop=2
|
52
|
+
:set shiftwidth=2
|
53
|
+
:set expandtab
|
54
|
+
```
|
55
|
+
|
56
|
+
(or as a oneliner `:set tabstop=2 shiftwidth=2 expandtab`). This can
|
57
|
+
be added to your `~/.vimrc` file to use it all the time.
|
58
|
+
|
59
|
+
### Emacs
|
60
|
+
|
61
|
+
Emacs is very well suited for editing Common Lisp and has many
|
62
|
+
powerful add-on packages available. The only thing that one needs to
|
63
|
+
do with a stock emacs to make it work well with exercism.io is to
|
64
|
+
evaluate the following code:
|
65
|
+
|
66
|
+
`(setq indent-tab-mode nil)`
|
67
|
+
|
68
|
+
This can be placed in your `~/.emacs` (or `~/.emacs.d/init.el`) in
|
69
|
+
order to have it set whenever Emacs is launched.
|
70
|
+
|
71
|
+
One suggested add-on for Emacs and Common Lisp is
|
72
|
+
[SLIME](https://github.com/slime/slime) which offers tight integration
|
73
|
+
with the REPL; making iterative coding and testing very easy.
|
74
|
+
|
75
|
+
## Source
|
76
|
+
|
77
|
+
The Calculating DNA Nucleotides_problem at Rosalind [http://rosalind.info/problems/dna/](http://rosalind.info/problems/dna/)
|
78
|
+
|
79
|
+
## Submitting Incomplete Solutions
|
80
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|