From 7b28a8614c2eba388d1991327fff0c9d464c644e Mon Sep 17 00:00:00 2001 From: Nathan Anderson Date: Mon, 8 Jul 2024 12:13:25 -0600 Subject: [PATCH] Added exercise and readme --- Code Exercise.pdf | Bin 0 -> 45654 bytes README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 Code Exercise.pdf create mode 100644 README.md diff --git a/Code Exercise.pdf b/Code Exercise.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d19cb3c4bf9390cf6901bdcf36edc50d41322214 GIT binary patch literal 45654 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..24cf33c --- /dev/null +++ b/README.md @@ -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 +```