Skip to content

GuidoBR/cartesian-go-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cartesian API

It's an API server in go that deals with a series of points represented as (x,y) coordinates on a simple 2-dimensional plane. Take a look at https://en.wikipedia.org/wiki/Cartesian_coordinate_system if you need a refresher on this concept.

GET /api/points?x={d}&y={y}&distance={distance}

  • x integer (required). This represents the x coordinate of the search origin.
  • y integer (required). This represents the y coordinate of the search origin.
  • distance integer (required). This represents the Manhattan distance; points within distance from x and y are returned, points outside are filtered out.

Returns a JSON list of points that are within distance from x,y, using the Manhattan distance method. The points are returned in order of increasing distance from the search origin.

The Manhattan distance is measured "block-wise", as the distance in blocks between any two points in the plane (e.g. 2 blocks down and 3 blocks over for a total of 5 blocks). It is defined as the sum of the horizontal and vertical distances between points on a grid. Formally, where p1 = (x1, y1) and p2 = (x2, y2), distance(p1,p2) = |x1-x2| + |y1-y2|.

On startup, the API server read a list of points from data/points.json.

Run

go build && ./cartesian-go-api

curl -s http://127.0.0.1:8000/api/points\?x\=10\&y\=20\&distance\=20

Tests

go test

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages