Skip to content

Instantly share code, notes, and snippets.

@imjacobclark
Created December 10, 2018 09:24
Show Gist options
  • Save imjacobclark/04018a1b1e166d92e8500f7442bcc163 to your computer and use it in GitHub Desktop.
Save imjacobclark/04018a1b1e166d92e8500f7442bcc163 to your computer and use it in GitHub Desktop.
package xyz.jacobclark.day3;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
class Fabric {
List<Claim> claims = new ArrayList<>();
public Fabric(){
create();
}
private void create(){
for(int x = 1; x <= 1000; x++){
for(int y = 1; y <= 1000; y++){
this.claims.add(new Claim(x, y));
}
}
}
public List<Claim> getClaims() {
return claims;
}
public void setClaims(List<Claim> claims) {
this.claims = claims;
}
public void makeClaim(final int x , final int y){
Claim claim = claims.stream().filter(claimToCheck -> claimToCheck.getX() == x && claimToCheck.getY() == y).findFirst().get();
claim.setClaims(claim.getClaims() + 1);
}
public long getOverlappingClaims() {
return claims
.stream()
.filter(claim -> claim.getClaims() > 1)
.map(claim -> claim.getClaims())
.count();
}
}
class Claim {
private int x;
private int y;
private int claims = 0;
public Claim(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getClaims() {
return claims;
}
public void setClaims(int claims) {
this.claims = claims;
}
}
public class OverlappingFabricTest {
@Test
public void shouldCount2OverlapsWhenTwoClaimsAreAtSamePosition() throws Exception {
Fabric fabric = new Fabric();
fabric.makeClaim(1,1);
fabric.makeClaim(1,1);
long overlappingClaims = fabric.getOverlappingClaims();
assertEquals(1, overlappingClaims);
}
@Test
public void name() throws Exception {
Fabric fabric = new Fabric();
// 1,3
fabric.makeClaim(4,2);
fabric.makeClaim(5,2);
fabric.makeClaim(6,2);
fabric.makeClaim(7,2);
fabric.makeClaim(4,3);
fabric.makeClaim(5,3);
fabric.makeClaim(6,3);
fabric.makeClaim(7,3);
fabric.makeClaim(4,4);
fabric.makeClaim(5,4);
fabric.makeClaim(6,4);
fabric.makeClaim(7,4);
fabric.makeClaim(4,5);
fabric.makeClaim(5,5);
fabric.makeClaim(6,5);
fabric.makeClaim(7,5);
// 3,1
fabric.makeClaim(2,4);
fabric.makeClaim(3,4);
fabric.makeClaim(4,4);
fabric.makeClaim(5,4);
fabric.makeClaim(2,5);
fabric.makeClaim(3,5);
fabric.makeClaim(4,5);
fabric.makeClaim(5,5);
fabric.makeClaim(2,6);
fabric.makeClaim(3,6);
fabric.makeClaim(4,6);
fabric.makeClaim(5,6);
fabric.makeClaim(2,7);
fabric.makeClaim(3,7);
fabric.makeClaim(4,7);
fabric.makeClaim(5,7);
// 5,5
fabric.makeClaim(6,6);
fabric.makeClaim(6,7);
fabric.makeClaim(7,6);
fabric.makeClaim(7,7);
long overlappingClaims = fabric.getOverlappingClaims();
assertEquals(4, overlappingClaims);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment