# rootulp's solution

## to Darts in the Java Track

Published at May 15 2020 · 0 comments
Instructions
Test suite
Solution

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
``````

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 missedTarget() {
Darts darts = new Darts(-9, 9);
assertEquals(0, darts.score());
}

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

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

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

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

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

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

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

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

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

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

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

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

}``````
``````class Darts {

private static final int RADIUS_OF_INNER_CIRCLE = 1;
private static final int RADIUS_OF_MIDDLE_CIRCLE = 5;
private static final int RADIUS_OF_OUTER_CIRCLE = 10;

private final double x;
private final double y;

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

int score() {
if(isInsideInnerCircle()) {
return 10;
}
if(isInsideMiddleCircle()) {
return 5;
}
if(isInsideOutserCircle()) {
return 1;
}
return 0;
}

boolean isInsideInnerCircle() {
}

boolean isInsideMiddleCircle() {
}

boolean isInsideOutserCircle() {
}

double distanceToOrigin() {
return Math.sqrt(Math.pow(this.x, 2) + Math.pow(y, 2));
}

}``````