Skip to content

Instantly share code, notes, and snippets.

@bric3
Last active December 26, 2015 21:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bric3/7219119 to your computer and use it in GitHub Desktop.
Save bric3/7219119 to your computer and use it in GitHub Desktop.
Another reason to not use java.util.Random for serious random data ;)
import java.util.Random;
public class EasterEgg {
public static void main(String[] args) {
System.out.println(new EasterEgg());
}
public String toString() {
return String.format(
"%s %s %s %s %s!\n\tSigned by %s, %s, %s, %s, %s, %s, %s, %s%s, %s, %s, %s, %s",
prettyString(9168705, 'a'),
prettyString(623241, ']'),
prettyString(121394, '['),
prettyString(156312575, '\\'),
prettyString(2773044, '\\'),
prettyString(1203740, '\\'),
prettyString(669708568, '^'),
prettyString(10807722, '`'),
prettyString(221827436, '['),
prettyString(-70136084, 'e'),
prettyString(602660054, 'X'),
prettyString(-91532585, ']'),
prettyString(900001449, 'Z'),
prettyString(900432017, 'l'),
prettyString(301097935, '_'),
prettyString(-99997884, 'a'),
prettyString(378414549, '\\'),
prettyString(512314520, '`')
);
}
public static String prettyString(long i, char base) {
Random ran = new Random(i);
StringBuilder sb = new StringBuilder();
for (int n = 0; ; n++) {
int k = ran.nextInt(27);
if (k == 0) break;
sb.append((char) (base + k));
}
return sb.toString();
}
}
import java.util.Random;
public class EasterEggGenerator {
public static void main(String[] args) {
long time = System.currentTimeMillis();
generate("hello", 0L, 1_000_000_000L);
generate("from", 0L, 1_000_000_000L);
generate("the", 0L, 1_000_000_000L);
generate("libon", 0L, 1_000_000_000L);
generate("team", 0L, 1_000_000_000L);
generate("brice", 0L, 1_000_000_000L);
generate("arnaud", 0L, 1_000_000_000L);
generate("fabien", 0L, 1_000_000_000L);
generate("pierre", 500_000L, 1_000_000_000L);
generate("pierre", 500_000_000L, 1_000_000_000L);
generate("mimix", -100_000_000L, 1_000_000_000L);
generate("tiger", -100_000_000L, 1_000_000_000L);
generate("alex", 300_000_000L, 1_000_000_000L);
generate("al", 900_000_000L, 1_000_000_000L);
generate("nour", 900_000_000L, 1_000_000_000L);
generate("pj", -100_000_000L, 1_000_000_000L);
generate("romain", -100_000_000L, 1_000_000_000L);
generate("duyhai", 500_000L, 1_000_000_000L);
System.out.println("Took " + (System.currentTimeMillis() - time) + " ms");
}
private static void generate(String goal, long minValue, long maxValue) {
long[] seed = generateSeed(goal, minValue, maxValue);
System.out.println("prettyString(" + seed[0] + ", '" + (char) seed[1] + "'),\t// => " + prettyString(seed[0], (char) seed[1]));
}
public static long[] generateSeed(String goal, long start, long finish) {
char[] input = goal.toCharArray();
char[] pool = new char[input.length];
label:
for (long seed = start; seed < finish; seed++) {
Random random = new Random(seed);
for (int i = 0; i < input.length; i++)
pool[i] = (char) random.nextInt(27);
if (random.nextInt(27) == 0) {
int base = input[0] - pool[0];
for (int i = 1; i < input.length; i++) {
if (input[i] - pool[i] != base)
continue label;
}
return new long[]{seed, base};
}
}
return null; // sorry got nothing
}
public static String prettyString(long i, char base) {
Random ran = new Random(i);
StringBuilder sb = new StringBuilder();
for (int n = 0; ; n++) {
int k = ran.nextInt(27);
if (k == 0)
break;
sb.append((char) (base + k));
}
return sb.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment