Last active
October 22, 2015 12:13
-
-
Save sandorfarkas/4c2adfd3fe388ab80c80 to your computer and use it in GitHub Desktop.
meanderingTime
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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