Skip to content

Instantly share code, notes, and snippets.

@az3
Last active August 29, 2015 14:00
Reddit Challenge 2014 04 14 Torn Number Java
// ** Puzzle;
// http://www.reddit.com/r/dailyprogrammer/comments/230m05/4142014_challenge_158_easy_the_torn_number/
// ** Algorithm;
// [3025] = (30+25)^2
// [abcd] = (ab+cd)^2
// 1000a + 100b + 10c + d = ( (10a + b) + (10c + d) )^2
// ** Diff check;
// a!=b & a!=c & a!=d & b!=c & b!=d & c!=d
// ** Output;
// Against the rule 'composed of four figures, all different': 2025
// Valid number found: 3025
// Valid number found: 9801
public class RedditChallenge {
public static void main(String[] args) {
try {
//System.out.println("checkMonday(3025) : " + checkMonday(3025));
challengeMonday();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void challengeMonday() {
try {
for (int i = 1000; i < 9999; i++) {
if (checkMonday(i)) {
System.out.println("Valid number found: " + i);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static boolean checkMonday(int number) {
try {
String str = Integer.toString(number);
if (str == null || str.isEmpty() || str.length() != 4) {
return false;
}
// ABCD
int digitA = Integer.parseInt("" + str.charAt(0)); // (number / 1000);
int digitB = Integer.parseInt("" + str.charAt(1)); // (number / 100) % 10;
int digitC = Integer.parseInt("" + str.charAt(2)); // (number / 10) % 10;
int digitD = Integer.parseInt("" + str.charAt(3)); // (number % 10);
int check = (1000 * digitA) + (100 * digitB) + (10 * digitC) + digitD;
if (number != check) {
System.out.println("Check number:" + number);
}
int result = ((10 * digitA + digitB) + (10 * digitC + digitD)) * ((10 * digitA + digitB) + (10 * digitC + digitD));
if (result == number) {
if (digitA == digitB || digitA == digitC || digitA == digitD
|| digitB == digitC || digitB == digitD || digitC == digitD) {
System.out.println("Against the rule 'composed of four figures, all different': " + number);
} else {
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment