42 lines
1.3 KiB
Java
42 lines
1.3 KiB
Java
import java.io.*;
|
|
|
|
public class Bomb {
|
|
public static final int START = 124;
|
|
public static final int CODE_LENGTH = 6;
|
|
|
|
public static void defuse(String code) throws Exception {
|
|
if (code.length() != CODE_LENGTH) {
|
|
throw new Bomb.Explosion();
|
|
}
|
|
|
|
String curr = Integer.toHexString(CODE_LENGTH);
|
|
for (int i = 1; i < CODE_LENGTH; i++) {
|
|
curr = scramble(curr);
|
|
if (curr.charAt(1) != code.charAt(i)) {
|
|
throw new Bomb.Explosion();
|
|
}
|
|
}
|
|
}
|
|
|
|
private static String scramble(String secret) {
|
|
return Integer.toHexString(Integer.parseInt(secret, 16) * 0xA9 / 0b010011);
|
|
}
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
System.out.println();
|
|
System.out.println("Bomb armed and ready for defusal.");
|
|
System.setOut(new PrintStream(new OutputStream() { public void write(int b) {} }));
|
|
|
|
// defuse("21d74"); // TODO: Find the code, hurry!
|
|
defuse("000000");
|
|
System.setOut(SYSTEM_OUT);
|
|
System.out.println("Bomb defused! You saved the day!");
|
|
System.out.println();
|
|
}
|
|
|
|
public static final PrintStream SYSTEM_OUT = System.out;
|
|
private static class Explosion extends RuntimeException {
|
|
public Explosion() { super("BOOM"); }
|
|
}
|
|
}
|