Skip to content

Instantly share code, notes, and snippets.

@mtrovo
Created January 16, 2013 03:02
Show Gist options
  • Save mtrovo/4544292 to your computer and use it in GitHub Desktop.
Save mtrovo/4544292 to your computer and use it in GitHub Desktop.
Self replicant java program for Thursday Code Puzzler of DZone
package mtrovo;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
public class SelfReplicant {
private static String NEXT=
"package mtrovo;\n"+
"\n"+
"import java.io.File;\n"+
"import java.io.IOException;\n"+
"\n"+
"import org.apache.commons.io.FileUtils;\n"+
"import org.apache.commons.lang.RandomStringUtils;\n"+
"import org.apache.commons.lang.StringEscapeUtils;\n"+
"import org.apache.commons.lang.StringUtils;\n"+
"public class %s {\n"+
"private static String NEXT=\"%s\";\n"+
"public static void main(String[] args) throws IOException {\n"+
" System.out.println(\"TEST%d\");\n"+
" replicate(%d);\n"+
"}\n"+
"\n"+
"private static void replicate(int v) throws IOException {\n"+
"String cname = StringUtils.capitalize(RandomStringUtils.randomAlphabetic(8));\n"+
"String fname=String.format(\"/moises.trovo/%%s.java\", cname);\n"+
"FileUtils.writeStringToFile(new File(fname), String.format(NEXT, cname, StringEscapeUtils.escapeJava(NEXT).replace(\"\\\\/\",\"/\"), v+1, v+1));\n"+
"}\n"+
"}";
public static void main(String[] args) throws IOException {
System.out.println("TEST1");
replicate(1);
}
private static void replicate(int v) throws IOException {
String cname = StringUtils.capitalize(RandomStringUtils.randomAlphabetic(8));
String fname=String.format("/moises.trovo/%s.java", cname);
FileUtils.writeStringToFile(new File(fname), String.format(NEXT, cname, StringEscapeUtils.escapeJava(NEXT).replace("\\/","/"), v+1, v+1));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment