Added exercise and readme
This commit is contained in:
parent
653b309825
commit
7b28a8614c
BIN
Code Exercise.pdf
Normal file
BIN
Code Exercise.pdf
Normal file
Binary file not shown.
65
README.md
Normal file
65
README.md
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
# Genius Deck
|
||||||
|
|
||||||
|
## Specification
|
||||||
|
|
||||||
|
A simple web API that manages an in-memory deck of cards.
|
||||||
|
|
||||||
|
On starting the API, or after sorting, the default sort order from top to bottom is:
|
||||||
|
```
|
||||||
|
Suits: Spades > Hearts > Clubs > Diamonds
|
||||||
|
Face Values: 2 > 10 > Jack > Queen > King > Ace
|
||||||
|
```
|
||||||
|
Two of Spades is on top, Ace of Diamonds is at the bottom.
|
||||||
|
|
||||||
|
Source code location where the routes are defined: [here](https://git.fosscat.com/n8r/genius_deck/src/commit/653b309825d2f3d9687126536c70a9124fceaf3b/src/main.zig#L67)
|
||||||
|
|
||||||
|
Permitted operations are as follows:
|
||||||
|
|
||||||
|
### GET `/deal`
|
||||||
|
Takes the top card off the deck and returns it as json
|
||||||
|
|
||||||
|
### GET `/cheat`
|
||||||
|
Peaks at the top card of the deck and returns it as json
|
||||||
|
|
||||||
|
### POST `/discard`
|
||||||
|
Discards a card previously dealt
|
||||||
|
Expects data in json in the form
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"face_value": "Seven",
|
||||||
|
"suite": "Spades"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### POST `/cut`
|
||||||
|
Cuts the deck at the index provided, either as query params (`/cut?index=10`) or json
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"index": 10
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### POST `/rebuild`
|
||||||
|
Puts the discard pile back into the deck and sorts the resulting deck
|
||||||
|
|
||||||
|
### POST `/sort`
|
||||||
|
Orders the deck in the default sort order (see [Specification](#Specification))
|
||||||
|
|
||||||
|
### POST `/shuffle`
|
||||||
|
Shuffles the current deck of cards in random order
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
You can navigate to the releases to download a prebuilt binary for your platform, or you can run it locally
|
||||||
|
yourself with Zig.
|
||||||
|
|
||||||
|
You will need to download Zig 0.13.0 from Zig's [releases page](https://ziglang.org/download/), or from your
|
||||||
|
package manager. If you use Nix flakes, a working config with direnv is already present in the repository.
|
||||||
|
|
||||||
|
### Deck Method Tests
|
||||||
|
|
||||||
|
The tests can be run with Zig by running the following command in the root of the project:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
zig test src/deck.zig
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user