Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/plutov/practice-go

Practice Go: a collection of Go programming challenges
https://github.com/plutov/practice-go

go golang hacktoberfest

Last synced: 7 days ago
JSON representation

Practice Go: a collection of Go programming challenges

Awesome Lists containing this project

README

        

## 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)) [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)) [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)

### 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.