een heel eind gekomen
This commit is contained in:
commit
e396b1ce39
11 changed files with 1435 additions and 0 deletions
35
.gitignore
vendored
Normal file
35
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
||||
25
pom.xml
Normal file
25
pom.xml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>org.github.shautvast.exceptional</groupId>
|
||||
<artifactId>avalor</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>22</maven.compiler.source>
|
||||
<maven.compiler.target>22</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
103
src/main/java/assessment/BestPathFinder.java
Normal file
103
src/main/java/assessment/BestPathFinder.java
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
package assessment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.PriorityQueue;
|
||||
|
||||
public class BestPathFinder {
|
||||
private final static double timeDistanceFactor = .2;
|
||||
private static Path max;
|
||||
private final static PriorityQueue<Path> paths = new PriorityQueue<>();
|
||||
private static volatile boolean running = true;
|
||||
|
||||
|
||||
/**
|
||||
* @param g het Grid (vierkant)
|
||||
* @param N grootte van het Grid
|
||||
* @param t totaal aantal discrete tijdstappen
|
||||
* @param T maximale tijdsduur
|
||||
* @param x startpositie X
|
||||
* @param y startpositie Y
|
||||
* @return het meest waardevole pad
|
||||
*/
|
||||
public static Path findMaxValPath(Grid g, int N, int t, int T, int x, int y) {
|
||||
Path path = Path.newPath(g, x, y);
|
||||
paths.add(path);
|
||||
max = path;
|
||||
|
||||
// start looping until T is reached or all paths have been considered
|
||||
while (running && !paths.isEmpty()) {
|
||||
// take current highest ranking path
|
||||
path = paths.peek();
|
||||
assert path != null;
|
||||
while (path.length() > t) {
|
||||
// dit pad heeft lengte t bereikt
|
||||
paths.poll(); // geen nieuwe paden op basis van deze, we pakken de vorige in waardering
|
||||
// heeft dit pad meer waarde dan de huidige max ?
|
||||
if (path.value() > max.value()) {
|
||||
max = path;
|
||||
}
|
||||
}
|
||||
|
||||
// find best new directions
|
||||
List<Point> newPointsFromHere = new ArrayList<>();
|
||||
if (y > 0) {
|
||||
newPointsFromHere.add(new Point(x, y - 1, getValueFromGrid(g, path, x, y - 1)));
|
||||
if (x < N - 1)
|
||||
newPointsFromHere.add(new Point(x + 1, y - 1, getValueFromGrid(g, path, x + 1, y - 1)));
|
||||
}
|
||||
if (x > 0) {
|
||||
newPointsFromHere.add(new Point(x - 1, y, getValueFromGrid(g, path, x - 1, y)));
|
||||
if (y > 0)
|
||||
newPointsFromHere.add(new Point(x - 1, y - 1, getValueFromGrid(g, path, x - 1, y - 1)));
|
||||
}
|
||||
if (x < N - 1) {
|
||||
newPointsFromHere.add(new Point(x + 1, y, getValueFromGrid(g, path, x + 1, y)));
|
||||
if (y < N - 1)
|
||||
newPointsFromHere.add(new Point(x + 1, y + 1, getValueFromGrid(g, path, x + 1, y + 1)));
|
||||
}
|
||||
if (y < N - 1) {
|
||||
newPointsFromHere.add(new Point(x, y + 1, getValueFromGrid(g, path, x, y + 1)));
|
||||
if (x > 0)
|
||||
newPointsFromHere.add(new Point(x - 1, y + 1, getValueFromGrid(g, path, x - 1, y + 1)));
|
||||
}
|
||||
|
||||
// sort the new points in descending order of value
|
||||
newPointsFromHere.sort(Point::compareTo);
|
||||
double max = newPointsFromHere.getFirst().value;
|
||||
for (Point p : newPointsFromHere) {
|
||||
// create a new Path based on the current
|
||||
Path newPath = path.copy();
|
||||
|
||||
// add the new point
|
||||
newPath.add(g, p);
|
||||
|
||||
// stop adding points once their value decreases
|
||||
if (p.value < max) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return max;
|
||||
}
|
||||
|
||||
/**
|
||||
* de waarde van een punt x,y wordt bepaald door de beginwaarde
|
||||
* tenzij we er al geweest zijn
|
||||
* dan telt de tijd sinds we er geweest zijn
|
||||
* = afstand in sindsdien afgelegd pad
|
||||
* de waarde is rechtevenredig met de afstand
|
||||
*/
|
||||
private static double getValueFromGrid(Grid grid, Path path, int x, int y) {
|
||||
int gridValue = grid.get(x, y);
|
||||
if (path.hasPoint(x, y)) {
|
||||
// been there
|
||||
int distanceInPath = path.getDistanceInPath(x, y);
|
||||
double increment = gridValue / timeDistanceFactor;
|
||||
|
||||
return Math.max((distanceInPath - 1) * increment, gridValue);
|
||||
} else {
|
||||
return gridValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
38
src/main/java/assessment/Grid.java
Normal file
38
src/main/java/assessment/Grid.java
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
package assessment;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public record Grid(List<List<Integer>> grid) {
|
||||
|
||||
public static Grid fromFile(String resource) {
|
||||
try {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(Grid.class.getClassLoader().getResourceAsStream(resource)));
|
||||
String line;
|
||||
List<List<Integer>> rows = new ArrayList<>();
|
||||
while ((line=reader.readLine())!=null){
|
||||
String[] values = line.split(" ");
|
||||
List<Integer> row = new ArrayList<>(values.length);
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
row.add(Integer.parseInt(values[i]));
|
||||
}
|
||||
rows.add(row);
|
||||
}
|
||||
return new Grid(rows);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public int get(int r, int c){
|
||||
return grid.get(r).get(c);
|
||||
}
|
||||
|
||||
//assumes square
|
||||
public int getWidth(){
|
||||
return grid.size();
|
||||
}
|
||||
}
|
||||
63
src/main/java/assessment/Path.java
Normal file
63
src/main/java/assessment/Path.java
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
package assessment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
|
||||
public class Path implements Comparable<Path> {
|
||||
// beide bevatten de al afgelegde punten
|
||||
|
||||
// points is bedoeld om door de punten te lopen
|
||||
private final ArrayList<Point> points = new ArrayList<>();
|
||||
|
||||
// trodden is bedoeld om zo snel mogelijk vast te stellen of we al op het punt geweest zijn
|
||||
private final HashSet<Integer> trodden = new HashSet<>();
|
||||
|
||||
private Path() {
|
||||
}
|
||||
|
||||
static Path newPath(Grid g, int x, int y) {
|
||||
Path p = new Path();
|
||||
newPath(g, x, y);
|
||||
return p;
|
||||
}
|
||||
|
||||
public void add(Grid g, Point point) {
|
||||
points.add(point);
|
||||
trodden.add(point.y * g.getWidth() + point.x);
|
||||
}
|
||||
|
||||
public Double value() {
|
||||
return points.stream().mapToDouble(point -> point.value).sum();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Path o) {
|
||||
return this.value().compareTo(o.value());
|
||||
}
|
||||
|
||||
public int length() {
|
||||
return points.size();
|
||||
}
|
||||
|
||||
boolean hasPoint(int x, int y) {
|
||||
return trodden.contains(x * y);
|
||||
}
|
||||
|
||||
int getDistanceInPath(int x, int y) {
|
||||
for (int i = points.size() - 1; i >= 0; i++) {
|
||||
if (points.get(i).x == x && points.get(i).y == y) {
|
||||
return points.size() - i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public Path copy(){
|
||||
Path p = new Path();
|
||||
p.points.addAll(points);
|
||||
p.trodden.addAll(trodden);
|
||||
return p;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
19
src/main/java/assessment/Point.java
Normal file
19
src/main/java/assessment/Point.java
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
package assessment;
|
||||
|
||||
public class Point implements Comparable<Point> {
|
||||
|
||||
final int x;
|
||||
final int y;
|
||||
final double value;
|
||||
|
||||
public Point(int x, int y, double value) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Point that) {
|
||||
return -Double.compare(this.value, that.value);
|
||||
}
|
||||
}
|
||||
100
src/main/resources/grids/100.txt
Normal file
100
src/main/resources/grids/100.txt
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
7 4 7 9 8 9 0 2 10 9 6 10 5 5 1 9 0 4 3 0 5 10 6 3 10 3 0 4 4 6 8 0 3 6 1 0 2 7 7 3 1 0 9 10 2 9 5 0 2 0 1 4 10 8 8 0 4 4 3 9 6 6 2 9 9 5 2 2 10 4 2 6 10 0 10 6 3 4 7 8 9 7 5 5 10 9 8 5 2 10 2 4 9 1 0 1 7 7 3 9
|
||||
3 6 7 9 5 3 7 9 9 2 1 8 9 5 1 9 5 3 4 10 4 1 3 1 2 10 8 6 7 10 1 10 0 0 4 10 4 6 4 0 4 10 9 6 7 8 5 1 1 6 6 8 8 7 6 5 7 8 6 4 6 5 9 8 4 5 5 9 10 4 3 5 10 1 7 0 8 1 1 3 8 6 4 2 8 9 10 3 6 2 10 3 6 6 5 8 7 10 2 1
|
||||
2 1 8 10 2 4 3 8 10 0 7 9 4 5 5 3 9 2 7 2 10 1 0 0 4 2 2 10 6 2 0 5 10 6 9 6 0 4 3 0 4 6 7 1 7 5 9 6 10 6 3 6 2 3 8 5 10 5 10 0 10 6 2 7 3 1 8 1 4 1 7 3 3 6 10 9 1 0 2 10 6 2 1 2 7 8 8 4 9 6 5 2 2 9 3 10 3 3 2 4
|
||||
3 4 4 0 6 2 0 5 9 0 4 0 9 8 8 0 10 9 8 2 0 10 3 3 6 0 10 3 0 3 6 2 2 8 4 9 4 6 2 7 0 7 3 7 10 7 6 4 5 9 5 10 7 9 8 6 1 0 4 9 8 2 3 1 7 5 7 8 6 5 9 8 5 10 7 2 8 7 5 0 7 4 8 3 0 6 2 7 0 1 10 4 7 9 3 10 8 10 1 0
|
||||
7 2 3 0 5 5 9 5 3 10 5 3 2 1 5 2 0 2 7 6 0 5 0 5 8 2 7 1 2 4 2 3 4 7 7 8 3 1 10 3 2 8 2 6 0 10 9 10 7 0 7 3 0 5 0 6 1 4 4 7 1 0 0 4 5 1 1 2 2 5 9 5 6 6 6 7 0 3 10 4 4 0 6 0 6 10 5 0 8 8 3 2 3 6 9 3 4 8 9 5
|
||||
2 9 6 3 7 2 5 7 3 7 8 10 10 6 1 9 3 6 1 7 2 2 7 6 9 10 5 7 10 0 3 4 2 3 5 4 10 0 6 2 3 5 2 2 0 9 2 6 5 10 3 0 9 3 3 2 2 2 2 3 7 0 9 6 4 4 7 3 0 10 0 2 2 4 4 1 1 1 3 1 4 5 1 9 5 2 7 3 7 7 2 4 6 8 6 2 6 8 5 1
|
||||
2 3 1 0 0 5 6 8 3 2 8 9 3 7 3 0 7 2 2 0 7 2 1 5 9 4 4 6 6 2 9 6 7 1 9 2 9 3 0 2 8 1 2 8 5 6 10 8 6 4 5 7 10 4 10 8 4 7 10 7 3 1 9 2 6 7 9 5 7 1 10 10 3 2 6 10 5 0 3 5 7 9 2 7 0 0 3 10 8 8 5 7 2 9 2 1 0 5 0 4
|
||||
4 5 2 5 0 2 4 1 8 0 2 0 7 1 1 7 1 9 0 2 1 3 4 2 0 10 7 6 3 7 6 5 0 10 2 4 1 7 1 10 1 8 2 10 8 6 2 7 5 1 8 9 6 7 10 8 8 1 8 4 3 8 8 5 5 1 5 3 7 6 0 1 8 6 8 4 0 9 6 4 0 10 10 0 10 10 7 6 5 2 3 6 2 4 2 6 8 4 9 3
|
||||
8 5 4 0 10 6 8 3 0 4 8 4 9 1 2 8 0 5 7 9 5 8 1 1 0 7 9 1 8 3 9 9 10 4 6 1 3 0 3 6 4 4 9 8 4 9 3 5 9 3 0 9 8 10 2 2 6 6 3 7 9 1 5 3 4 8 2 5 10 6 9 9 9 2 6 6 1 3 1 3 10 10 8 9 3 3 1 0 6 1 3 9 4 4 10 4 4 7 2 0
|
||||
6 4 2 4 9 3 8 8 7 4 3 0 10 2 6 0 9 10 5 5 7 0 6 8 7 7 8 0 2 3 5 6 7 6 9 3 9 8 2 7 8 2 3 9 0 2 4 0 8 6 2 7 7 3 7 0 6 2 4 10 3 5 5 6 7 2 1 6 6 0 2 1 9 7 1 9 2 9 10 0 3 5 1 5 6 2 8 10 1 8 10 10 7 0 6 0 0 8 4 3
|
||||
9 5 8 2 0 3 8 6 4 8 6 1 0 1 0 3 4 0 1 5 10 5 9 5 4 3 1 8 7 4 2 6 0 1 3 10 1 7 0 10 2 3 3 8 4 8 2 7 3 8 0 8 7 2 5 10 1 8 3 10 4 7 4 2 0 10 4 3 3 1 5 9 10 7 1 10 10 3 2 6 4 4 10 2 10 3 3 2 8 6 6 8 1 6 0 7 2 2 0 1
|
||||
1 7 2 1 10 10 4 2 2 10 1 6 7 3 8 9 3 4 1 3 4 10 10 0 10 7 9 5 3 0 2 4 9 3 8 3 6 4 8 10 8 8 9 0 0 1 9 0 4 7 5 1 7 7 10 5 1 9 1 1 5 10 5 6 7 0 7 10 3 3 4 9 5 0 2 7 9 6 8 10 1 6 5 3 1 7 0 0 9 5 10 10 7 7 8 7 7 9 5 5
|
||||
4 4 6 10 3 9 7 3 2 5 2 8 8 9 7 1 7 3 5 2 9 2 1 2 9 8 8 4 10 2 1 10 5 5 0 2 2 7 7 10 2 2 5 1 1 8 6 6 2 7 3 3 7 8 0 6 3 3 6 10 1 8 2 8 6 2 4 0 8 2 7 6 8 5 1 4 9 10 3 5 5 5 9 7 1 1 9 10 8 4 6 0 9 2 10 2 3 7 2 2
|
||||
2 1 2 7 1 0 1 9 3 5 9 10 3 8 2 7 3 0 5 8 2 9 8 10 6 8 8 2 6 8 7 2 4 4 3 2 9 6 3 8 4 2 0 5 0 9 9 3 1 1 7 7 9 5 9 3 10 8 1 6 4 1 10 3 4 3 6 5 5 9 1 8 2 4 5 0 0 6 6 2 6 2 5 2 4 5 5 10 5 6 0 5 7 7 3 4 3 5 10 7
|
||||
9 8 3 8 3 8 0 8 0 10 2 1 1 1 10 5 1 8 8 0 5 6 3 0 2 7 4 10 3 6 8 7 9 3 1 6 3 8 0 8 10 10 2 4 10 5 5 6 4 2 2 5 7 9 10 5 2 5 5 1 3 7 4 7 2 4 10 2 2 8 9 8 1 4 0 3 9 0 3 0 3 4 3 9 7 10 1 3 9 10 8 0 9 5 4 5 8 5 10 4
|
||||
0 5 4 4 9 10 8 6 5 0 10 9 7 8 5 3 4 1 6 6 9 6 3 7 2 8 3 6 10 3 4 3 4 2 0 0 5 0 7 8 0 10 2 4 9 6 8 5 0 8 3 2 6 6 0 0 10 2 3 1 10 3 4 4 3 5 1 8 5 0 6 8 1 1 2 3 0 8 2 6 1 7 2 1 5 7 9 3 6 6 8 8 7 5 0 1 2 4 1 0
|
||||
2 7 2 3 6 7 4 4 10 4 10 8 10 4 10 10 8 8 5 1 10 8 3 7 1 5 8 10 6 0 7 2 10 10 2 5 2 1 4 9 6 9 3 9 9 8 0 5 4 9 8 8 7 0 1 2 8 2 6 10 3 6 0 8 3 7 2 0 3 10 7 2 1 8 8 10 7 7 3 10 0 7 9 6 0 1 9 0 8 1 8 8 6 10 10 7 4 0 1 10
|
||||
0 9 2 10 5 9 9 9 8 2 2 10 0 10 8 0 3 5 2 7 2 6 2 4 8 5 10 1 1 5 7 7 0 8 1 8 4 0 6 5 8 8 4 8 10 9 3 0 7 10 10 0 8 8 7 10 9 3 2 1 10 2 0 4 7 6 3 6 4 8 10 9 5 3 7 4 5 4 7 9 0 8 7 8 9 1 3 10 9 6 10 10 0 0 2 1 5 3 8 1
|
||||
2 6 1 5 6 3 1 10 4 4 1 6 9 8 4 6 10 3 2 7 7 9 2 9 4 7 9 9 7 8 8 3 0 1 7 9 8 8 6 4 7 5 5 0 0 1 2 2 6 6 1 2 5 1 8 0 3 4 4 2 5 3 8 2 0 6 6 0 4 5 8 9 4 10 6 4 4 9 3 9 9 3 2 5 5 0 5 1 8 4 5 1 9 1 5 0 10 0 9 4
|
||||
1 9 4 5 10 4 0 6 5 1 0 1 8 4 9 0 9 0 7 10 9 0 6 4 6 10 6 0 6 10 6 3 9 1 10 10 1 8 1 8 0 4 6 10 5 7 4 2 9 3 7 1 4 1 5 0 2 6 0 4 4 3 6 5 9 4 3 6 9 3 8 9 7 4 5 5 8 1 4 6 3 10 2 0 0 5 1 3 9 8 5 6 2 6 10 7 5 10 5 2
|
||||
7 8 9 2 8 6 3 3 5 1 3 0 10 4 4 6 3 7 8 7 4 4 2 0 4 3 10 2 5 5 7 1 2 4 5 7 8 10 10 9 1 8 7 9 10 10 2 0 2 8 0 4 8 7 10 10 0 6 6 10 5 2 3 6 1 9 1 1 6 8 5 1 9 8 7 0 7 6 2 5 8 2 4 8 5 8 0 9 7 4 3 7 9 9 4 9 5 9 6 10
|
||||
9 5 1 2 2 0 8 2 7 0 2 5 1 5 5 3 0 4 2 10 0 2 0 5 10 9 3 5 7 8 10 0 8 6 4 5 10 1 0 10 10 8 2 0 9 6 1 4 0 9 7 7 0 0 3 0 5 8 9 0 10 2 6 8 10 4 6 5 1 10 3 9 9 7 9 0 5 8 10 6 10 5 9 7 6 3 4 1 9 2 5 7 3 0 10 5 2 10 8 10
|
||||
10 1 0 3 3 7 2 6 9 7 7 5 3 2 8 10 4 9 6 8 5 6 1 7 6 5 4 4 0 6 10 6 1 1 7 8 7 0 8 4 10 9 5 7 9 5 8 4 9 1 4 6 3 6 1 9 5 3 3 1 0 1 8 2 7 6 8 3 4 4 3 10 0 8 1 2 5 2 1 10 2 1 9 10 3 5 2 4 6 5 6 7 7 2 6 5 1 1 3 7
|
||||
1 5 9 0 3 5 0 1 3 10 1 9 1 5 9 8 8 8 5 0 0 3 2 3 9 8 2 5 9 2 0 0 2 2 0 0 4 0 8 6 6 0 4 10 6 1 1 8 0 7 7 0 7 6 6 6 2 8 0 7 1 10 0 3 9 2 9 2 10 9 1 4 10 8 4 6 8 6 7 2 10 10 0 6 5 1 4 9 4 2 10 2 8 10 3 9 5 7 1 3
|
||||
7 10 8 5 3 10 2 5 10 4 9 8 0 1 3 7 8 7 5 9 0 10 10 2 2 4 2 1 10 8 0 10 2 7 7 6 2 5 10 4 7 5 1 8 7 0 5 9 9 5 2 2 3 0 0 3 10 4 10 10 3 7 9 0 8 4 3 2 10 6 1 10 0 6 0 9 2 6 8 9 7 5 6 10 9 9 7 7 7 9 2 0 7 7 10 5 5 8 6 0
|
||||
4 2 5 5 9 0 6 10 9 8 8 7 4 9 10 10 2 0 1 2 5 8 8 7 7 3 7 3 10 9 8 8 2 6 0 10 7 8 4 5 5 9 7 4 3 1 2 0 8 4 7 6 6 10 5 6 0 8 10 6 1 8 7 8 6 9 3 3 7 9 0 3 7 7 2 6 9 4 7 2 10 0 2 9 3 0 4 2 9 4 10 10 9 9 9 9 0 2 2 7
|
||||
8 2 9 5 2 4 8 1 10 9 6 1 0 9 3 8 9 2 3 0 8 5 8 8 0 3 3 3 0 7 5 1 10 1 8 1 5 7 7 3 3 7 0 4 9 2 8 9 4 3 10 3 0 2 0 4 6 0 8 4 6 1 1 9 6 6 0 2 4 1 0 2 3 7 8 0 8 2 8 7 6 0 4 6 9 7 10 1 6 2 4 2 8 0 3 8 4 3 2 9
|
||||
3 8 1 3 1 2 4 4 4 3 9 2 5 5 8 3 4 3 0 7 10 1 7 8 4 10 2 5 4 0 6 4 10 0 4 6 0 1 6 1 10 8 8 5 3 10 10 5 7 1 1 6 4 6 3 0 5 8 5 2 4 7 9 2 2 4 0 6 6 1 2 0 7 7 8 7 8 3 3 10 5 10 1 3 7 6 9 3 8 7 2 2 9 9 8 8 5 0 6 8
|
||||
1 10 6 5 1 10 4 3 6 3 7 9 7 1 0 7 7 10 5 3 2 0 8 1 3 3 5 0 6 2 2 8 9 2 9 6 2 8 5 0 8 8 1 3 8 4 8 2 10 8 2 7 3 9 8 5 10 6 8 3 9 6 4 2 7 2 3 5 3 1 8 5 1 9 0 7 3 8 2 0 4 9 7 7 4 0 10 0 2 7 0 9 10 6 7 1 5 2 3 8
|
||||
1 4 7 2 5 8 1 5 9 4 4 3 7 7 9 3 4 7 4 10 0 1 6 6 5 6 3 10 0 0 4 4 1 9 10 9 1 8 5 10 1 8 10 8 3 8 2 10 7 6 9 2 5 5 0 9 9 7 10 6 9 1 10 6 7 6 2 3 1 4 1 3 10 6 10 4 8 9 8 10 0 10 5 4 8 4 4 1 0 6 6 2 10 8 8 4 3 0 4 3
|
||||
2 1 9 8 7 1 1 5 1 3 9 2 10 1 0 3 10 6 9 4 4 9 7 8 5 9 8 4 10 6 2 10 8 6 5 0 10 7 3 1 3 7 0 6 1 6 2 10 10 10 10 3 8 0 8 7 3 10 2 4 6 9 1 10 7 7 6 6 9 8 7 10 10 9 1 1 9 0 4 0 7 5 4 4 2 7 1 3 0 9 4 4 4 5 2 2 1 9 0 10
|
||||
4 7 5 1 7 1 0 2 0 6 7 9 1 8 0 4 3 5 6 9 8 9 2 5 9 10 8 5 0 3 6 2 2 7 8 3 2 5 2 1 3 10 10 2 5 1 3 4 10 5 5 6 1 2 10 2 3 4 9 5 1 4 3 7 5 4 10 1 1 10 7 4 8 4 4 8 1 4 3 10 6 5 4 2 0 3 3 3 2 3 0 10 5 7 6 1 5 10 5 8
|
||||
0 10 0 0 7 4 6 9 2 6 1 8 9 9 7 3 9 9 0 7 5 8 3 5 7 8 9 3 10 2 6 8 1 9 0 2 1 5 10 1 8 2 1 2 0 4 8 6 9 7 6 2 8 6 3 7 5 7 8 1 4 3 5 3 2 2 10 6 2 6 9 6 6 2 8 4 9 10 6 4 6 8 7 2 2 9 0 4 6 2 1 4 0 8 7 7 8 0 4 6
|
||||
2 6 5 3 8 6 9 5 1 9 8 4 5 0 10 3 8 2 6 1 8 1 8 2 4 3 4 7 1 4 9 3 1 5 7 6 2 4 1 4 3 2 4 8 8 0 3 5 0 5 1 4 3 5 6 10 6 7 6 10 10 1 4 0 1 2 0 8 0 3 5 10 8 4 1 9 1 2 3 6 0 1 0 3 5 2 6 1 5 1 7 1 2 8 6 5 3 6 2 7
|
||||
6 6 5 7 1 2 3 7 5 7 5 2 1 3 9 5 7 6 2 2 5 9 2 1 2 10 0 9 4 4 0 10 9 4 1 5 2 10 1 7 8 8 3 1 8 8 9 6 10 5 2 9 3 10 5 3 4 0 3 10 4 6 4 10 3 6 1 7 5 5 10 0 8 1 3 4 2 2 9 2 1 7 0 3 8 6 0 1 1 0 4 5 9 1 7 5 4 1 8 3
|
||||
9 8 9 4 8 3 3 4 10 2 3 6 6 8 7 10 7 6 6 7 10 8 8 9 6 6 8 1 0 4 5 1 8 8 0 6 3 3 2 8 5 2 8 4 7 10 3 10 10 5 3 7 1 7 9 8 9 8 0 3 1 2 8 9 8 5 2 7 8 6 3 0 7 1 7 6 5 10 1 6 0 5 9 3 10 0 1 1 3 9 7 3 6 10 0 3 8 2 0 5
|
||||
4 9 10 2 0 2 3 8 1 3 2 1 1 2 7 7 9 10 5 6 7 1 5 1 0 2 9 5 1 10 7 7 6 10 8 0 8 1 2 5 7 7 6 6 6 10 1 1 6 1 7 2 5 9 2 8 7 9 1 2 2 5 4 9 6 10 5 10 0 4 3 9 0 3 4 6 7 3 0 8 4 9 9 9 9 9 10 1 6 1 5 6 5 1 1 4 9 7 3 1
|
||||
3 5 4 1 1 10 2 2 6 10 6 4 6 5 4 10 0 9 2 7 8 4 7 0 5 1 3 3 8 1 2 7 4 2 8 7 1 8 7 8 1 6 0 1 5 6 7 4 10 9 3 7 8 9 8 0 3 7 2 1 5 2 0 9 10 2 5 0 5 9 5 2 4 8 9 9 9 2 8 0 7 5 10 0 8 0 1 6 3 1 6 2 3 4 1 8 0 2 6 9
|
||||
10 8 7 5 4 3 8 2 10 7 1 4 9 3 2 4 5 10 0 5 4 8 1 5 4 6 10 7 7 4 4 7 2 7 7 10 8 9 5 6 7 6 1 9 0 3 8 4 8 7 2 7 1 1 10 4 9 10 5 4 7 1 3 10 1 10 1 0 3 9 6 5 5 10 6 7 10 4 0 6 1 2 6 9 2 4 9 7 8 2 7 10 4 7 10 10 0 5 2 7
|
||||
8 9 6 4 1 3 7 1 0 6 5 2 0 9 3 0 1 5 9 10 0 10 2 3 4 4 3 9 3 5 6 7 8 1 10 5 6 9 2 9 9 5 3 5 9 7 7 4 4 4 10 0 1 0 9 1 3 8 6 1 3 1 10 5 8 9 7 1 1 5 8 7 5 10 2 4 10 8 1 4 6 9 10 3 1 9 3 8 6 8 1 2 4 2 3 0 7 6 9 2
|
||||
3 7 0 1 4 8 2 7 7 7 4 10 5 8 7 10 4 0 3 4 7 10 8 0 9 4 9 5 2 8 4 6 4 6 7 10 5 2 8 6 3 3 7 5 6 0 10 7 0 7 9 10 9 3 8 2 10 7 4 1 6 9 3 8 6 1 8 10 4 4 0 9 3 10 7 1 8 9 7 1 6 6 3 2 10 1 1 3 0 2 7 3 5 1 5 9 7 3 0 1
|
||||
0 8 0 7 4 7 1 1 1 7 4 2 6 9 2 5 3 5 5 10 1 2 10 8 0 6 2 8 0 3 10 2 5 7 8 8 5 4 0 4 3 5 9 9 2 0 2 3 5 0 8 0 5 0 0 8 1 6 10 6 3 2 6 8 8 6 5 7 4 7 7 2 2 8 2 3 8 3 5 2 8 1 0 3 5 6 4 10 2 4 7 9 8 3 1 6 5 2 5 2
|
||||
7 6 4 6 4 10 0 5 2 2 6 10 10 9 7 2 7 1 9 4 0 6 9 5 9 0 8 9 8 10 10 5 3 0 6 6 9 6 9 5 7 0 5 7 2 2 1 4 1 5 8 6 5 0 5 1 2 8 3 3 2 7 6 9 6 9 3 10 4 1 2 2 8 6 4 2 3 5 3 1 2 9 7 0 1 9 9 0 0 10 0 2 5 0 2 9 5 8 7 5
|
||||
8 10 9 0 2 1 7 3 9 2 7 3 4 1 6 2 9 1 9 4 3 7 6 8 5 6 0 10 0 10 5 9 2 5 8 0 10 2 0 6 7 5 2 1 1 1 10 8 6 9 8 0 9 4 4 3 5 4 0 1 6 0 0 8 8 0 1 8 6 6 4 5 7 8 1 3 3 3 4 9 6 2 10 10 3 9 8 4 10 0 10 6 10 10 8 9 3 7 10 5
|
||||
7 2 5 6 1 3 8 1 8 0 10 3 7 4 4 0 4 9 7 10 0 8 5 6 10 6 10 4 8 0 0 10 3 10 0 8 7 8 4 2 7 6 0 0 5 0 7 8 2 4 3 6 7 10 3 9 8 0 10 2 5 1 3 8 1 2 1 8 2 1 4 7 3 5 0 10 0 8 8 9 8 8 9 4 9 2 4 10 10 8 2 9 7 8 9 5 0 5 5 3
|
||||
5 10 1 8 5 1 9 4 1 3 6 4 1 4 7 10 9 9 4 2 4 6 9 2 0 1 6 5 4 5 8 3 1 2 5 6 2 9 4 2 9 1 4 1 0 7 5 2 10 2 10 2 9 10 8 8 10 10 1 7 0 5 5 8 9 6 1 3 7 9 4 9 7 8 6 5 5 5 5 2 3 7 1 5 10 10 0 3 3 0 1 7 7 9 6 8 10 4 3 3
|
||||
10 3 2 6 10 1 2 7 8 6 1 0 1 10 2 4 4 2 7 2 3 1 5 10 2 7 6 2 3 3 4 9 5 1 1 8 2 9 8 10 3 10 8 10 2 5 2 7 0 9 8 9 3 0 7 0 6 8 6 10 5 2 9 7 8 9 1 3 10 9 4 7 1 8 0 4 10 4 7 1 8 4 10 3 1 2 7 2 7 0 5 9 4 9 8 7 4 3 1 8
|
||||
4 7 7 4 9 3 0 4 3 9 6 8 8 1 6 5 6 0 1 6 4 4 7 3 8 8 6 4 2 7 6 5 9 1 7 9 7 1 4 6 2 2 4 3 2 8 2 4 9 10 9 4 7 2 3 6 3 0 9 5 6 9 8 7 8 10 5 3 1 8 6 1 7 4 6 5 10 5 6 4 0 2 5 1 2 5 9 10 2 4 7 10 2 6 1 5 1 3 9 0
|
||||
8 3 0 1 5 3 8 2 0 0 1 7 5 2 4 3 10 6 10 7 3 0 1 4 2 0 5 9 6 7 2 9 8 9 8 8 8 7 1 2 1 0 6 3 7 9 5 7 10 4 7 3 8 1 7 0 7 10 9 9 5 3 2 2 9 8 8 3 6 4 2 7 7 3 10 6 8 8 9 6 1 3 9 3 6 1 5 1 0 10 3 3 0 8 8 4 7 7 0 7
|
||||
7 9 10 10 6 6 4 0 8 4 3 10 4 9 2 4 2 6 3 6 1 1 2 10 6 4 10 1 0 0 6 8 3 5 1 1 9 1 2 7 8 0 6 1 10 8 10 8 1 1 9 10 1 0 2 6 5 0 7 10 7 10 8 7 10 7 1 6 6 10 8 7 0 10 2 10 1 3 1 10 0 6 8 7 9 10 3 9 8 9 0 6 2 1 0 10 7 7 1 4
|
||||
9 2 1 5 1 2 0 6 2 10 5 6 9 0 1 1 3 2 2 2 4 5 4 7 3 3 10 2 10 8 0 3 5 1 1 6 0 8 2 1 0 6 6 5 5 3 8 9 1 0 5 6 5 7 4 1 4 2 1 7 5 7 8 10 7 3 0 9 8 1 7 3 7 2 9 3 6 7 1 8 10 0 10 9 0 6 7 4 8 6 4 2 4 7 3 9 0 4 0 2
|
||||
7 6 0 7 9 3 4 7 7 4 1 4 4 9 3 2 2 6 10 8 1 3 8 5 2 9 3 9 10 0 10 10 4 9 3 6 7 7 0 2 2 3 3 6 3 7 0 8 9 6 5 4 10 10 9 6 7 2 10 6 9 1 0 9 4 3 0 10 3 4 2 9 4 8 2 8 6 2 10 10 5 8 3 10 8 10 4 5 0 6 5 5 5 9 6 4 3 6 10 10
|
||||
6 6 9 9 1 8 8 2 10 3 1 8 3 10 1 5 0 3 4 6 1 7 7 7 10 7 2 0 8 9 1 7 8 1 7 4 9 1 7 1 5 8 9 9 8 6 7 0 10 8 4 2 8 0 5 1 7 2 1 5 2 1 1 10 10 1 4 10 5 8 7 10 8 5 2 1 1 3 8 1 3 5 10 0 7 10 6 7 3 7 0 9 5 10 0 0 2 3 7 7
|
||||
4 7 10 7 1 8 5 3 8 0 1 6 4 3 4 5 0 6 0 5 0 3 8 6 2 3 3 5 3 10 9 1 2 1 2 6 7 6 2 0 9 9 1 2 10 7 4 0 10 10 6 4 0 5 6 9 7 0 3 4 5 3 10 9 7 3 8 1 8 7 6 5 9 5 6 10 9 3 2 0 10 1 1 10 9 1 9 10 4 0 8 4 10 1 7 8 1 7 9 10
|
||||
8 4 1 1 4 4 9 1 4 6 0 1 10 3 4 10 1 5 1 3 2 10 0 9 5 2 7 6 3 0 3 9 10 5 1 4 0 3 6 7 6 8 10 7 2 4 10 7 9 2 10 8 1 9 3 10 9 4 1 8 9 8 0 3 8 5 9 9 8 8 8 10 8 8 7 7 6 5 10 10 6 9 2 10 7 5 5 1 9 7 10 2 1 4 4 0 1 4 1 4
|
||||
3 3 0 9 2 2 7 8 6 0 3 5 6 3 10 8 8 8 9 0 6 5 3 10 1 2 8 7 10 10 1 1 0 9 10 9 5 5 7 7 10 1 0 10 7 6 6 9 3 6 3 5 5 6 2 7 10 6 10 0 1 4 8 9 2 0 1 3 10 2 3 4 3 4 5 8 10 6 1 10 1 5 1 9 4 5 1 2 4 6 9 4 0 4 9 7 1 2 6 5
|
||||
8 3 2 4 5 3 2 2 3 1 6 4 10 9 3 3 10 6 3 4 10 2 6 5 6 6 7 8 6 10 2 8 2 10 9 7 9 7 0 7 6 3 3 10 9 10 7 0 2 6 10 5 9 2 7 0 5 4 8 1 1 6 2 4 7 6 1 10 2 3 2 10 10 8 5 0 9 2 1 7 2 3 6 3 6 9 0 4 2 4 9 9 3 4 8 8 8 7 7 9
|
||||
10 8 0 0 9 8 10 9 0 4 2 6 3 0 8 1 0 7 4 9 8 4 9 8 2 6 7 1 10 2 5 8 3 10 0 2 7 7 5 8 1 9 4 4 0 6 6 3 0 5 9 2 4 10 1 0 0 6 5 0 1 3 10 5 4 1 4 6 1 7 1 1 9 1 3 9 5 1 1 6 4 9 7 9 9 5 7 0 9 4 7 6 9 2 9 9 9 7 5 7
|
||||
9 2 8 7 8 6 9 3 8 9 9 8 2 1 1 7 6 1 10 9 0 3 7 10 7 1 1 9 1 10 1 0 3 9 0 2 9 10 9 9 9 1 8 10 8 1 2 2 10 5 3 7 3 7 4 8 9 10 6 6 2 10 1 2 7 6 5 10 3 8 6 10 10 8 0 5 9 9 1 10 8 3 3 3 2 6 3 3 7 1 3 6 8 6 3 10 1 9 9 4
|
||||
3 3 1 3 8 6 8 10 6 5 1 6 7 8 10 1 8 4 4 10 1 10 7 6 6 7 7 4 10 7 4 9 7 9 3 2 4 1 7 6 0 1 4 10 1 6 2 5 5 8 5 4 8 9 5 0 6 1 10 0 2 10 1 2 8 9 1 10 7 2 0 3 10 9 10 7 1 8 3 7 4 9 1 1 9 3 2 6 9 1 3 0 9 5 9 0 8 4 9 0
|
||||
4 0 2 9 6 3 10 8 6 4 9 7 6 3 9 8 5 3 2 9 8 10 0 10 7 1 6 4 7 3 3 4 7 9 6 1 5 2 9 5 7 4 8 1 0 0 0 6 4 6 10 0 2 5 4 1 9 8 2 6 7 0 10 0 1 9 10 6 10 7 1 0 1 9 9 3 7 6 5 0 5 5 5 9 7 5 0 8 4 9 0 3 8 1 4 5 7 9 9 10
|
||||
3 4 3 10 0 3 4 2 4 4 0 1 6 2 3 1 5 10 8 1 1 0 10 4 9 9 9 3 2 9 3 8 4 10 9 4 4 6 8 6 1 1 4 0 2 7 4 8 0 1 8 5 0 5 1 9 1 7 1 6 4 0 0 8 5 4 8 9 0 9 9 0 3 2 1 8 8 6 2 10 2 10 5 10 1 10 4 6 4 4 10 1 8 0 4 7 3 8 10 3
|
||||
5 1 0 10 5 2 8 8 10 10 3 1 7 0 3 9 7 9 3 0 0 10 3 6 0 9 7 3 2 2 4 3 7 9 2 9 7 5 1 1 10 7 7 0 7 8 6 1 1 9 2 5 10 5 4 6 0 0 5 7 5 10 0 5 2 6 4 10 10 2 0 4 7 4 0 0 6 4 6 4 7 4 6 6 5 9 0 6 3 2 2 3 7 2 2 2 0 9 8 2
|
||||
4 4 3 7 5 1 1 1 8 6 5 4 3 4 2 0 0 10 1 5 5 10 8 9 6 9 7 5 2 0 1 3 10 2 0 0 5 6 8 5 1 0 7 6 6 6 1 5 6 4 10 7 0 10 1 1 0 10 10 3 4 4 2 9 2 7 3 1 6 10 2 6 1 7 10 10 5 10 7 5 4 6 6 3 6 9 9 4 0 2 5 2 6 5 4 10 1 4 1 7
|
||||
6 10 4 7 8 7 7 10 10 3 8 1 1 0 9 8 0 10 1 3 8 4 6 1 4 3 8 3 7 3 1 8 2 0 2 2 2 0 2 7 3 4 9 4 1 6 9 10 4 1 3 7 7 5 1 5 3 3 6 8 10 9 8 4 8 10 0 3 5 5 5 6 5 7 4 0 5 6 6 9 1 7 5 8 0 2 3 1 7 1 7 3 4 2 5 8 3 5 6 3
|
||||
1 2 7 4 3 9 3 0 4 8 8 2 3 4 6 8 4 4 1 3 5 4 2 2 5 0 9 4 4 7 5 10 0 3 1 1 9 10 1 7 6 3 9 9 9 9 5 3 8 10 2 10 9 2 10 4 8 2 9 5 9 10 5 1 9 0 8 7 3 3 2 6 8 10 2 6 8 4 1 1 1 8 7 9 6 10 8 7 3 5 3 10 3 6 4 0 6 7 1 8
|
||||
10 4 7 2 3 10 1 4 0 8 5 3 7 6 10 9 2 6 2 3 0 6 7 8 9 2 7 7 0 6 1 7 1 1 1 10 6 10 5 5 7 1 6 6 10 7 4 5 8 10 1 4 2 8 10 3 6 7 3 6 1 2 10 2 3 3 5 10 7 1 4 7 4 7 6 4 8 0 8 10 2 8 10 7 3 1 1 9 4 3 2 6 7 1 6 3 1 6 0 8
|
||||
10 5 4 6 1 4 7 1 6 7 9 0 1 7 9 10 1 4 7 3 5 10 10 1 8 7 5 0 10 3 8 10 4 1 8 9 10 8 5 2 5 1 6 9 9 3 6 2 3 8 0 4 2 4 9 9 5 5 10 9 2 2 9 2 5 0 10 2 8 8 4 4 5 3 5 6 4 1 2 4 1 5 8 7 6 2 8 5 8 2 3 10 0 7 5 6 10 0 9 4
|
||||
8 9 9 3 8 8 8 4 0 7 9 4 0 10 2 7 9 7 4 10 7 9 5 4 10 9 7 2 5 1 2 10 2 10 10 1 4 10 8 7 9 2 8 7 0 5 2 1 7 2 2 4 1 7 10 3 0 0 1 0 6 10 6 1 0 9 6 6 2 0 5 4 3 8 2 5 4 1 5 2 0 9 3 5 2 8 2 2 5 8 6 5 4 2 10 6 7 8 6 7
|
||||
8 8 7 2 3 8 10 5 1 2 2 10 2 6 4 2 7 8 1 1 8 6 2 7 3 6 7 6 5 6 3 5 7 9 3 9 4 4 3 9 9 0 1 3 5 8 2 0 5 6 7 1 4 9 0 2 7 4 3 7 4 10 7 6 6 1 2 3 0 4 5 2 2 10 1 7 5 1 6 7 10 0 7 0 8 6 9 1 8 7 7 2 7 9 6 3 6 1 6 0
|
||||
7 2 2 5 8 9 4 7 1 8 8 3 8 4 6 1 1 10 9 10 1 0 0 1 3 6 2 2 2 6 2 3 5 10 3 10 0 7 3 4 5 3 4 3 2 9 6 5 0 7 6 8 8 5 3 4 9 5 9 9 5 8 10 5 10 6 7 1 10 7 0 2 7 0 7 10 0 6 4 0 8 4 3 2 8 8 1 5 9 6 10 0 3 5 2 9 2 9 9 9
|
||||
0 6 2 6 6 2 5 0 2 3 1 7 10 4 6 0 2 7 9 4 10 3 10 1 10 10 4 8 10 7 6 1 10 2 7 3 4 3 7 2 2 2 1 8 3 1 1 4 3 1 10 4 2 7 9 0 9 4 6 7 3 4 1 0 1 2 8 1 10 0 3 1 3 2 1 7 4 4 7 7 10 1 5 0 3 8 2 10 7 1 7 4 7 5 7 9 2 3 10 4
|
||||
10 0 9 6 8 1 5 1 7 8 10 0 2 6 6 9 8 10 5 7 8 9 8 8 4 9 7 10 8 10 6 4 3 3 10 8 2 4 6 5 6 2 8 2 10 4 0 8 1 2 1 9 6 5 6 10 8 3 8 4 2 1 8 1 1 5 7 10 5 7 1 8 1 8 5 1 9 9 7 3 1 3 10 6 0 6 4 8 5 9 10 3 6 1 9 5 4 9 10 5
|
||||
2 10 6 1 5 8 8 6 10 0 8 1 7 2 7 1 6 1 4 5 2 4 8 0 0 10 5 6 9 2 3 6 5 10 3 4 5 4 1 6 9 7 6 5 0 1 10 9 8 5 5 9 9 2 2 7 0 8 3 10 9 9 1 6 3 1 9 9 6 0 7 7 1 6 8 6 1 4 6 1 3 10 2 10 8 7 7 10 1 1 2 6 2 6 7 10 10 4 1 1
|
||||
4 9 8 4 7 5 7 0 10 6 4 10 2 2 3 5 7 1 8 4 7 5 5 6 6 8 1 1 4 4 5 2 4 5 4 2 3 9 10 6 2 5 0 10 7 0 5 7 8 5 6 10 5 2 10 10 5 1 0 3 8 8 10 3 4 10 2 1 7 4 4 9 1 2 2 9 7 5 6 6 8 10 8 1 8 4 4 0 1 3 5 9 9 10 5 7 2 9 2 9
|
||||
3 3 5 10 8 1 1 1 2 5 4 10 10 2 8 9 7 10 0 8 5 8 2 0 6 6 9 5 2 3 7 5 3 5 1 9 1 10 0 9 8 0 4 3 1 1 10 3 0 6 5 8 8 3 0 1 4 4 2 2 5 10 6 6 6 9 9 10 5 0 7 3 6 6 0 2 10 10 4 1 3 0 0 3 7 5 8 0 10 3 4 0 10 8 7 4 9 2 8 10
|
||||
4 3 7 9 0 6 7 1 3 3 6 5 7 2 8 4 2 1 4 4 4 3 6 1 8 4 9 7 8 1 0 2 1 7 0 2 3 4 7 2 8 1 5 0 2 9 5 1 2 1 7 5 6 8 10 3 3 8 10 5 8 0 3 3 7 3 6 1 0 8 9 6 4 3 2 6 10 0 3 3 3 4 9 4 8 3 1 10 4 3 7 8 10 2 0 7 8 6 8 9
|
||||
5 3 9 1 7 5 10 2 9 10 8 6 5 2 4 8 2 10 1 9 4 10 1 5 6 10 5 4 4 5 2 9 10 3 5 6 10 10 4 1 1 1 1 2 1 4 4 5 4 3 9 0 9 3 5 2 5 2 5 0 7 3 2 3 8 4 3 1 5 4 4 3 3 9 2 6 8 10 9 8 2 9 10 10 10 4 5 9 2 3 1 10 10 5 3 8 9 6 0 2
|
||||
9 10 7 1 0 1 1 1 2 9 0 9 5 6 6 6 1 7 4 7 9 8 3 1 9 5 4 3 7 9 2 9 5 1 6 7 6 9 10 0 4 1 3 0 8 6 6 3 6 8 5 8 4 0 2 0 0 10 9 10 9 4 8 7 6 7 0 0 9 8 1 7 2 7 3 1 6 6 7 0 4 1 7 7 5 1 4 4 5 3 7 6 0 2 4 10 0 6 2 3
|
||||
9 0 9 10 10 1 3 7 7 0 3 8 1 7 0 8 0 9 10 6 2 7 7 4 8 2 4 8 9 5 6 7 7 0 9 9 10 5 9 5 2 7 5 5 8 4 9 6 1 5 3 10 1 5 7 1 8 6 0 9 9 4 2 7 8 9 4 2 6 8 1 2 1 6 9 10 8 0 0 4 8 6 4 3 9 7 8 10 1 8 6 10 10 0 2 10 8 9 0 4
|
||||
3 7 7 9 0 9 9 8 1 9 1 4 9 4 10 2 4 2 10 0 10 0 9 0 9 0 0 10 1 10 6 5 4 8 7 7 3 3 3 5 9 2 6 1 2 2 8 3 9 3 5 0 1 3 7 2 3 3 6 8 8 8 6 3 2 9 1 4 10 0 4 4 5 1 2 0 5 3 1 8 4 6 10 0 4 6 9 9 8 8 5 0 0 7 8 9 4 9 0 3
|
||||
8 3 6 2 8 1 9 1 9 8 9 6 9 6 0 8 0 8 5 6 5 5 7 6 10 5 0 6 9 10 4 8 4 6 9 0 0 6 9 10 0 10 8 1 3 5 4 2 3 6 8 5 4 1 5 7 3 6 1 6 4 2 6 0 8 4 10 10 8 1 6 5 6 9 6 9 6 8 1 6 6 8 4 3 10 5 3 9 6 0 2 8 7 3 7 8 5 0 0 8
|
||||
5 2 5 6 10 2 8 10 2 1 7 4 3 4 2 5 7 4 3 4 0 3 9 6 5 2 6 0 10 6 4 8 6 6 9 6 8 0 4 1 0 4 5 1 5 7 6 10 0 3 9 4 10 7 0 9 10 2 3 0 9 10 8 4 1 8 5 7 7 0 0 1 4 1 8 3 1 3 6 3 10 10 0 9 9 7 6 1 5 7 9 5 9 10 8 6 1 0 5 3
|
||||
0 6 10 6 3 6 1 3 3 7 5 2 5 3 9 4 6 5 10 1 0 8 7 4 6 4 10 6 7 7 2 0 3 1 7 0 1 2 4 9 10 5 5 3 6 5 10 8 9 3 5 4 0 2 3 0 4 9 5 8 4 3 9 0 0 8 7 10 10 5 10 3 8 7 6 2 8 6 0 4 7 8 5 3 4 2 0 4 8 7 7 4 4 5 9 8 5 4 2 1
|
||||
4 10 1 9 1 8 8 4 7 10 5 3 4 8 0 4 8 0 9 8 0 7 3 9 5 9 4 5 7 8 6 4 7 1 8 10 5 9 1 3 10 5 7 0 3 8 7 10 2 10 1 4 4 10 9 6 4 5 6 10 3 5 8 5 7 8 10 8 8 0 7 10 2 10 4 5 0 3 2 9 5 4 2 3 5 0 7 0 5 3 9 5 1 5 4 8 10 7 0 0
|
||||
9 5 4 7 0 5 10 1 10 8 1 1 1 5 2 1 6 9 7 0 7 3 5 9 10 0 0 5 5 4 8 9 7 0 0 6 1 5 1 0 8 6 1 5 4 4 10 10 1 5 3 7 2 8 6 4 8 2 6 9 8 0 10 3 4 8 2 4 10 9 3 9 10 10 5 9 10 1 6 6 3 6 4 0 2 2 1 0 3 8 2 6 0 0 8 6 8 4 1 8
|
||||
1 5 1 8 3 6 2 9 0 3 5 8 5 10 7 5 0 0 8 5 10 10 10 4 5 6 6 3 3 1 2 10 9 4 9 1 1 6 0 6 7 0 1 4 8 9 10 8 0 8 0 2 4 1 8 7 9 0 3 2 5 8 8 5 8 8 6 6 7 9 9 0 1 2 9 4 2 7 5 4 10 5 3 2 10 5 1 2 1 4 7 3 1 7 0 5 3 5 8 8
|
||||
5 4 0 10 10 3 4 0 8 7 10 4 10 8 7 2 3 6 4 2 0 7 6 7 8 10 2 2 2 0 9 2 1 5 2 7 7 9 0 6 8 0 2 3 4 2 1 3 0 5 5 3 0 0 1 7 3 1 4 6 8 8 6 3 4 8 5 1 8 2 1 10 2 8 7 9 9 4 4 10 0 4 1 5 1 7 8 3 3 5 10 6 4 7 1 1 8 7 9 4
|
||||
5 6 2 8 10 1 3 6 6 3 2 2 0 6 8 5 4 0 10 10 6 7 10 1 5 0 10 4 10 6 0 8 7 3 8 7 4 9 7 4 0 6 1 5 4 1 9 7 4 2 4 4 5 9 6 5 8 2 3 7 1 3 4 6 5 8 10 3 7 9 6 8 6 1 7 3 1 10 7 4 1 2 2 6 3 5 5 4 9 4 1 3 10 2 0 2 9 8 0 4
|
||||
9 2 0 2 8 4 4 2 8 4 2 6 3 5 1 8 5 8 3 4 1 6 2 2 6 6 6 4 1 0 5 3 5 2 8 4 7 9 3 9 10 0 6 4 8 7 3 9 7 6 9 10 3 9 3 10 2 4 3 5 10 1 0 6 7 2 0 7 8 4 2 2 9 9 5 5 3 7 5 7 6 1 7 7 0 7 0 1 0 5 8 9 6 0 0 3 10 9 3 8
|
||||
1 3 9 6 0 7 6 6 3 9 5 8 1 0 8 9 1 2 9 4 1 1 4 5 7 2 6 3 3 8 7 1 3 7 10 2 4 10 0 3 9 2 3 10 4 2 1 5 9 6 7 3 2 8 4 7 9 0 9 3 5 7 9 9 2 10 10 2 8 8 9 0 3 9 6 5 7 2 10 0 6 8 4 2 8 10 7 7 2 4 8 9 3 1 6 3 1 7 10 2
|
||||
7 6 0 6 5 7 8 1 6 1 1 0 3 10 4 9 1 4 5 2 2 7 10 8 10 6 1 6 3 0 4 9 6 4 10 1 10 4 6 3 4 8 9 2 7 3 9 5 6 6 4 5 2 1 5 4 4 1 0 2 10 3 9 0 8 8 5 3 9 10 0 1 9 9 10 4 4 5 7 7 8 3 0 5 6 8 6 3 8 5 4 0 8 0 7 10 7 3 7 0
|
||||
8 4 9 5 5 3 3 4 7 4 8 2 1 5 7 9 2 6 10 0 2 4 7 10 2 4 6 10 2 6 8 4 6 10 3 5 2 4 5 2 5 0 1 7 9 4 5 8 3 8 6 7 6 3 0 1 8 1 0 0 5 6 2 5 0 6 9 7 7 1 2 7 10 7 9 7 8 3 4 7 5 6 1 4 2 8 10 4 10 1 2 0 3 9 1 9 10 7 9 8
|
||||
4 0 6 4 9 9 2 3 9 2 2 9 7 2 8 4 6 9 6 6 0 6 2 7 1 6 1 2 6 9 10 4 7 7 4 9 2 5 8 7 4 5 0 2 9 2 2 1 4 4 8 5 0 5 2 10 0 0 6 5 0 1 0 9 3 6 3 5 6 6 0 2 0 6 1 3 2 2 1 2 4 9 6 9 8 6 4 7 3 5 5 2 10 3 4 4 10 9 10 6
|
||||
2 10 7 7 0 2 4 8 8 2 6 5 0 6 9 9 4 8 10 10 5 0 9 1 10 5 5 3 7 10 6 10 7 7 8 5 6 3 8 4 1 5 0 10 2 8 7 8 10 3 10 5 7 4 7 7 6 0 1 6 9 5 8 9 8 7 1 10 10 2 0 1 8 8 1 0 1 5 9 4 0 8 9 3 1 3 2 7 4 8 9 6 0 6 2 10 6 7 6 7
|
||||
3 9 4 2 5 3 2 0 5 7 1 1 10 4 2 2 7 2 1 6 5 6 3 8 6 8 4 0 1 0 4 2 6 5 8 10 1 3 7 10 3 5 9 3 10 6 3 6 5 2 3 2 8 4 10 6 7 9 8 3 8 1 0 9 4 2 9 7 4 6 9 6 8 10 2 7 4 4 3 7 10 8 2 10 4 9 5 2 4 4 2 1 2 2 7 7 8 7 5 4
|
||||
1 4 10 8 8 2 10 7 2 3 9 2 4 0 10 0 7 6 2 3 4 6 7 7 0 1 7 6 7 7 9 2 3 1 6 8 6 1 5 4 4 5 3 3 4 2 2 9 8 3 9 6 5 5 4 6 10 9 1 0 0 7 9 4 9 5 10 8 2 7 7 1 5 10 7 10 8 6 6 4 2 10 7 9 4 5 9 10 7 3 3 0 7 1 6 7 1 1 1 6
|
||||
2 1 3 0 7 1 8 7 5 10 10 0 1 9 2 1 1 3 10 6 5 9 3 1 7 7 6 9 6 0 6 6 8 5 5 3 10 6 9 5 4 1 3 1 8 10 0 5 10 5 3 3 9 1 9 6 4 10 4 0 6 8 10 10 1 5 3 2 1 7 5 2 4 5 3 7 9 7 6 9 0 9 3 8 2 4 2 7 2 9 2 2 5 5 3 2 6 1 10 0
|
||||
0 6 1 3 4 4 10 5 6 8 9 10 8 1 2 7 2 6 8 5 6 7 10 2 9 4 3 2 4 9 2 2 10 10 9 3 6 3 0 10 9 7 10 5 3 4 1 1 3 10 7 2 5 8 8 10 2 7 0 10 8 7 5 10 1 1 6 4 3 0 6 0 4 10 6 3 5 4 3 7 8 10 0 10 0 8 2 9 0 7 4 8 1 8 1 7 1 10 7 0
|
||||
4 0 4 2 6 9 5 6 10 9 5 7 2 6 5 9 0 1 3 8 7 5 7 10 7 6 8 6 4 7 6 1 2 0 1 9 2 5 3 10 1 2 1 1 8 9 10 7 7 2 9 10 9 0 3 5 2 2 2 8 1 8 9 2 3 9 3 2 5 10 4 9 8 4 3 2 2 3 10 3 0 1 5 5 7 1 4 9 0 5 4 8 6 10 4 7 8 8 9 3
|
||||
1000
src/main/resources/grids/1000.txt
Normal file
1000
src/main/resources/grids/1000.txt
Normal file
File diff suppressed because it is too large
Load diff
20
src/main/resources/grids/20.txt
Normal file
20
src/main/resources/grids/20.txt
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
0 0 2 1 1 2 1 0 0 1 2 0 0 2 1 0 1 1 2 1
|
||||
1 0 2 1 1 0 1 1 2 1 2 0 1 2 1 1 0 2 2 0
|
||||
2 2 2 0 1 0 0 2 0 0 1 2 0 0 1 2 2 2 2 0
|
||||
2 2 2 1 2 1 0 1 0 2 0 1 2 2 1 0 2 1 2 1
|
||||
0 1 0 0 2 1 1 0 2 1 1 2 2 2 1 0 0 2 1 1
|
||||
0 1 1 0 0 0 2 0 1 2 1 2 2 0 2 0 0 2 2 0
|
||||
0 2 0 1 2 0 1 1 1 2 2 0 2 0 1 1 1 2 1 2
|
||||
2 0 1 2 0 2 2 0 0 2 0 1 1 2 1 0 2 0 2 2
|
||||
0 0 1 2 1 2 0 2 2 0 2 0 1 1 2 1 2 0 0 2
|
||||
1 1 1 2 0 0 1 1 2 2 0 2 2 2 2 1 1 2 0 2
|
||||
0 0 1 0 0 1 1 1 2 0 2 2 1 0 1 0 2 0 0 2
|
||||
2 0 0 0 0 2 0 0 0 1 2 0 1 0 1 0 0 2 0 2
|
||||
0 0 0 1 1 0 1 1 1 2 0 2 2 0 0 1 1 2 0 2
|
||||
2 0 0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 2 1 1
|
||||
2 1 0 0 1 0 2 1 2 2 2 1 0 0 1 0 1 1 1 0
|
||||
2 1 0 2 2 1 2 2 1 2 2 2 2 2 0 2 1 0 2 0
|
||||
0 0 1 2 2 0 1 1 0 1 0 2 0 0 2 1 0 1 0 1
|
||||
0 1 2 1 1 1 1 1 1 2 0 1 0 2 1 0 0 0 1 0
|
||||
2 0 1 2 2 2 0 0 0 0 2 1 2 1 0 0 1 0 0 1
|
||||
0 1 1 2 0 0 2 2 0 2 0 2 2 1 1 0 2 2 2 0
|
||||
18
src/test/java/GridReadTest.java
Normal file
18
src/test/java/GridReadTest.java
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import assessment.Grid;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class GridReadTest {
|
||||
|
||||
@Test
|
||||
void testGridReader() {
|
||||
Grid grid = Grid.fromFile("grids/20.txt");
|
||||
List<Integer> row10 = grid.grid().get(9);
|
||||
String row10line = row10.stream().map(i -> "" + i).collect(Collectors.joining(" "));
|
||||
assertEquals("1 1 1 2 0 0 1 1 2 2 0 2 2 2 2 1 1 2 0 2", row10line);
|
||||
}
|
||||
}
|
||||
14
src/test/java/PathFinderTest.java
Normal file
14
src/test/java/PathFinderTest.java
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import assessment.Grid;
|
||||
import assessment.Path;
|
||||
import assessment.BestPathFinder;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class PathFinderTest {
|
||||
|
||||
@Test
|
||||
public void testBestPath() {
|
||||
Grid grid = Grid.fromFile("grids/20.txt");
|
||||
Path path = BestPathFinder.findMaxValPath(grid, 20, 10, 1000, 9, 9);
|
||||
System.out.println(path);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue