# ksnortum's solution

## to Darts in the Java Track

Published at May 01 2019 · 0 comments
Instructions
Test suite
Solution

#### Note:

This exercise has changed since this solution was written.

Write a function that returns the earned points in a single toss of a Darts game.

Darts is a game where players throw darts to a target.

In our particular instance of the game, the target rewards with 4 different amounts of points, depending on where the dart lands:

• If the dart lands outside the target, player earns no points (0 points).
• If the dart lands in the outer circle of the target, player earns 1 point.
• If the dart lands in the middle circle of the target, player earns 5 points.
• If the dart lands in the inner circle of the target, player earns 10 points.

The outer circle has a radius of 10 units (This is equivalent to the total radius for the entire target), the middle circle a radius of 5 units, and the inner circle a radius of 1. Of course, they are all centered to the same point (That is, the circles are concentric) defined by the coordinates (0, 0).

Write a function that given a point in the target (defined by its `real` cartesian coordinates `x` and `y`), returns the correct amount earned by a dart landing in that point.

## Setup

Go through the setup instructions for Java to install the necessary dependencies:

https://exercism.io/tracks/java/installation

# Running the tests

You can run all the tests for an exercise by entering the following in your terminal:

``````\$ gradle test
``````

Use `gradlew.bat` if you're on Windows

In the test suites all tests but the first have been skipped.

Once you get a test passing, you can enable the next one by removing the `@Ignore("Remove to run test")` annotation.

## Source

Inspired by an exercise created by a professor Della Paolera in Argentina

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

### DartsTest.java

``````import org.junit.Ignore;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

public class DartsTest {

@Test
public void testDartOutsideTarget() {
Darts darts = new Darts(-9, 9);
assertEquals(0, darts.score());
}

@Ignore("Remove to run test")
@Test
public void testDartLandsOnBorderOfTarget() {
Darts darts = new Darts(0, 10);
assertEquals(1, darts.score());
}

@Ignore("Remove to run test")
@Test
public void testDartLandsInOuterCircle() {
Darts darts = new Darts(4, 4);
assertEquals(1, darts.score());
}

@Ignore("Remove to run test")
@Test
public void testDartLandsInBorderBetweenOuterAndMiddleCircles() {
Darts darts = new Darts(5, 0);
assertEquals(5, darts.score());
}

@Ignore("Remove to run test")
@Test
public void testDartLandsOnMiddleOfCircle() {
Darts darts = new Darts(0.8, -0.8);
assertEquals(5, darts.score());
}

@Ignore("Remove to run test")
@Test
public void testDartLandsOnBorderBetweenMiddleAndInnerCircles() {
Darts darts = new Darts(0, -1);
assertEquals(10, darts.score());
}

@Ignore("Remove to run test")
@Test
public void testDartLandsInTheInnerCircle() {
Darts darts = new Darts(-0.1, -0.1);
assertEquals(10, darts.score());
}

@Ignore("Remove to run test")
@Test
Darts darts = new Darts(0.4, 0.8);
assertEquals(10, darts.score());
}

@Ignore("Remove to run test")
@Test
Darts darts = new Darts(2, 4);
assertEquals(5, darts.score());
}

@Ignore("Remove to run test")
@Test
Darts darts = new Darts(4, 8);
assertEquals(1, darts.score());
}

}``````
``````class Darts {
private final double x;
private final double y;

Darts(double x, double y) {
this.x = x;
this.y = y;
}

int score() {
double d = Math.sqrt( x * x + y * y );

if (d <= 10 && d > 5) {
return 1;
} else if (d <= 5 && d > 1) {
return 5;
} else if (d <= 1) {
return 10;
}

return 0;
}

}``````