This repository has been archived on 2026-03-18. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
CSE-123/Bomb.java
2026-03-18 00:39:35 -07:00

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"); }
}
}