Skip to content

Instantly share code, notes, and snippets.

@sandorfarkas
Last active October 22, 2015 12:13
Show Gist options
  • Save sandorfarkas/4c2adfd3fe388ab80c80 to your computer and use it in GitHub Desktop.
Save sandorfarkas/4c2adfd3fe388ab80c80 to your computer and use it in GitHub Desktop.
meanderingTime
import java.awt.Point;
import java.util.ArrayList;
/**
*
* @author Sandor Farkas
*
* Solution for math game http://gojruht.tumblr.com/post/131583345160/calliecucumber-mathani-example-of-a
*
*/
public class meanderingTime {
static ArrayList<Number> list = new ArrayList<Number>();
static ArrayList<String> results = new ArrayList<String>();
static void printNumbers(int beam, int depth, String prevDigits) {
if (depth == 5) {
int hour = Integer.parseInt(prevDigits.substring(0, 2));
int minute = Integer.parseInt(prevDigits.substring(2));
if (!results.contains(prevDigits) && hour <= 23 && minute <= 59)
results.add(prevDigits);
return;
}
for (Number n : list) {
for (Point p : n.path) {
if (p.x == beam) {
printNumbers(p.y, depth + 1, prevDigits + n.number);
}
}
}
}
public static void main(String[] args) {
Number one = new Number(1);
one.path.add(new Point(0, 2));
one.path.add(new Point(2, 0));
list.add(one);
Number two = new Number(2);
two.path.add(new Point(0, 2));
list.add(two);
Number five = new Number(5);
five.path.add(new Point(2, 0));
list.add(five);
Number six = new Number(6);
six.path.add(new Point(1, 0));
list.add(six);
Number seven = new Number(7);
seven.path.add(new Point(0, 2));
list.add(seven);
Number nine = new Number(9);
nine.path.add(new Point(2, 1));
list.add(nine);
// beam starts on top
printNumbers(0, 1, "");
// beam starts in middle
printNumbers(1, 1, "");
// beam starts on bottom
printNumbers(2, 1, "");
for (int i = 0; i < results.size(); i++) {
System.out.println(results.get(i));
}
}
}
class Number {
public int number;
public ArrayList<Point> path = new ArrayList<Point>();
public Number(int number) {
this.number = number;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment