annotate 5-Erlang/day1.erl @ 71:32f018861e36

Add Day 1 Erlang content
author IBBoard <dev@ibboard.co.uk>
date Fri, 02 Feb 2018 20:38:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
71
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 -module(day1).
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2 -export([wordcount/1]).
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 -export([count_to_ten/0]).
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 -export([success_or_error/1]).
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 wordcount("") -> 0;
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 wordcount([_|[]]) -> 1;
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 % NOTE: We can't use " " here - because it is a string and hence an array, not a character.
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 % Instead we get a slightly ugly "dollar space"
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 % Note the funky extra match to handle multiple consecutive spaces (although we still don't handle leading or trailing spaces)
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 wordcount([$ |[$ |Tail]]) -> wordcount([$ |Tail]);
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 wordcount([$ |Tail]) -> 1 + wordcount(Tail);
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 wordcount([_|Tail]) -> wordcount(Tail).
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 count_to(1) -> io:fwrite("~B ", [1]);
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 count_to(N) -> count_to(N-1), io:fwrite("~B ", [N]).
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 count_to_ten() -> count_to(10), io:fwrite("~n").
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 success_or_error({error, Message}) -> io:fwrite("error: ~s~n", [Message]);
32f018861e36 Add Day 1 Erlang content
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 success_or_error(success) -> io:fwrite("success~n").