## Go coding exercises and elegant solutions

### How to solve

 - Each challenge(folder) has a README.md file and `*_test.go` file, check it and find what kind of function you need to implement.
 - You may use anything you want except the 3rd-party packages.
 - Implement the function.
 - Run the tests and benchmarks.
 - Create a PR and answer questions from PR template.
 - We will choose the most fast and elegant solution and merge into the repo.
 - New solutions may come in later and be merged as well if they are: faster, cleaner, have less CPU/Mem footprint

### Challenges

 - [x] ([@macocha](https://github.com/macocha), [@mick4711](https://github.com/mick4711)) [chess](https://github.com/plutov/practice-go/tree/master/chess)
 - [x] ([@kennygrant](https://github.com/kennygrant)) [floyd](https://github.com/plutov/practice-go/tree/master/floyd)
 - [x] ([@ledongthuc](https://github.com/ledongthuc)) [anagram](https://github.com/plutov/practice-go/tree/master/anagram)
 - [x] ([@heliac2000](https://github.com/heliac2000)) [jaro](https://github.com/plutov/practice-go/tree/master/jaro)
 - [x] ([@nguyengiabk](https://github.com/nguyengiabk), [@denpeshkov](https://github.com/denpeshkov)) [mergesort](https://github.com/plutov/practice-go/tree/master/mergesort)
 - [x] ([@nguyengiabk](https://github.com/nguyengiabk)) [wordladder](https://github.com/plutov/practice-go/tree/master/wordladder)
 - [x] ([@EvenPeng](https://github.com/EvenPeng)) [sumdecimal](https://github.com/plutov/practice-go/tree/master/sumdecimal)
 - [x] ([@bediger4000](https://github.com/bediger4000), [Polqt](https://github.com/Polqt)) [buildword](https://github.com/plutov/practice-go/tree/master/buildword)
 - [x] ([@zerkms](https://github.com/zerkms)) [shorthash](https://github.com/plutov/practice-go/tree/master/shorthash)
 - [x] ([@zerkms](https://github.com/zerkms)) [romannumerals](https://github.com/plutov/practice-go/tree/master/romannumerals)
 - [x] ([@zerkms](https://github.com/zerkms)) [lastlettergame](https://github.com/plutov/practice-go/tree/master/lastlettergame)
 - [x] ([@duckbrain](https://github.com/duckbrain)) [reverseparentheses](https://github.com/plutov/practice-go/tree/master/reverseparentheses)
 - [x] ([@kennygrant](https://github.com/kennygrant)) [functionfrequency](https://github.com/plutov/practice-go/tree/master/functionfrequency)
 - [x] ([@marz619](https://github.com/marz619)) [coins](https://github.com/plutov/practice-go/tree/master/coins)
 - [x] ([@marz619](https://github.com/marz619)) [secretmessage](https://github.com/plutov/practice-go/tree/master/secretmessage)
 - [x] ([@shogg](https://github.com/shogg)) [missingnumbers](https://github.com/plutov/practice-go/tree/master/missingnumbers)
 - [x] ([@HDudzus](https://github.com/HDudzus)) [spiral](https://github.com/plutov/practice-go/tree/master/spiral)
 - [x] ([@TomLefley](https://github.com/TomLefley)) [warriors](https://github.com/plutov/practice-go/tree/master/warriors)
 - [x] ([@shogg](https://github.com/shogg)) [snowflakes](https://github.com/plutov/practice-go/tree/master/snowflakes)
 - [x] ([@shogg](https://github.com/shogg)) [brokennode](https://github.com/plutov/practice-go/tree/master/brokennode)
 - [x] ([@shogg](https://github.com/shogg)) [nasacollage](https://github.com/plutov/practice-go/tree/master/nasacollage)
 - [x] ([@shogg](https://github.com/shogg)) [node_degree](https://github.com/plutov/practice-go/tree/master/node_degree)
 - [x] ([@brianpzaide](https://github.com/brianpzaide)) [compression](https://github.com/plutov/practice-go/tree/master/compression)
 - [x] ([@CicadaCinema](https://github.com/CicadaCinema)) [calculator](https://github.com/plutov/practice-go/tree/master/calculator)
 - [ ] () [meetings](https://github.com/plutov/practice-go/tree/master/meetings)
 - [ ] () [octantconway](https://github.com/plutov/practice-go/tree/master/octantconway)

### Run tests with benchmarks

Run it in the challenge folder:

```
go test -bench .
```

### How to contribute

You may suggest other challenges as well, not only of DSA type.

Create a new challenge using this small bash script and create a PR.

```
./new.sh challenge_name
```

The challenge must follow these rules:
- Explain the challenge well in README.md file so it's clear to everyone what needs to be done.
- Cover as much of test cases as possible, edge cases as well so people who solve it can focus on the implementation only.

### Contributors

<a href="https://github.com/plutov/practice-go/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=plutov/practice-go" />
</a>
