blob: 955a43f1a6d68e4be7e8e2a290bc0255c5dc6b6b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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"); }
}
}
|