// HomeworkGenerator // A2Z @ ITP // Created by alex kauffmann on 3/5/08. // import java.util.*; import java.io.PrintWriter; import java.io.IOException; public class HomeworkGenerator { private String formatter; private String replacer; private String condenser; private String orderer; private int triggered = 0; private String filterString = ""; public static void main (String args[]) { HomeworkGenerator hg = new HomeworkGenerator(); hg.generate(); } public HomeworkGenerator() { } public void formatter() { double chance = Math.random(); if (chance > 0.5) return; else { int randomIndex = (int)(Math.random() * 3); switch (randomIndex) { case 0: // Makes everything lower case formatter = "line = line.toLowerCase();\n"; filterString += formatter; break; case 1: // Makes everything upper case formatter = "line = line.toUpperCase();\n"; filterString += formatter; break; case 2: // Upper cases words greater than a random length determined at compile time formatter = "String[] word = line.split(\"\\\\W+\");\nline=\"\";\nfor (String w: word) {\nif (w.length() > ((int)(Math.random()*8))) w = w.toUpperCase();\nline+=w+\" \";\n}\n"; filterString += formatter; break; } } } public void replacer() { double chance = Math.random(); if (chance > 0.5) return; else { int randomIndex = (int)(Math.random() * 3); switch (randomIndex) { case 0: // Unhelpful mechanic translator replacer = "line = line.replaceAll(\"\\\\bis\\\\b\", \"ain't\");\nline = line.replaceAll(\"\\\\bIs\\\\b\", \"Ain't\");\nline = line.replaceAll(\"\\\\bare\\\\b\", \"aren't\");\nline = line.replaceAll(\"\\\\bAre\\\\b\", \"Aren't\");\nline = line.replaceAll(\"\\\\bcan\\\\b\", \"can't\");\nline = line.replaceAll(\"\\\\bCan\\\\b\", \"Can't\");\nline = line.replaceAll(\"\\\\bdo\\\\b\", \"don't\");\nline = line.replaceAll(\"\\\\bDo\\\\b\", \"Don't\");\nline = line.replaceAll(\"\\\\bcould\\\\b\", \"couldn't\");\nline = line.replaceAll(\"\\\\bCould\\\\b\", \"Couldn't\");\nline = line.replaceAll(\"\\\\bwould\\\\b\", \"wouldn't\");\nline = line.replaceAll(\"\\\\bWould\\\\b\", \"Wouldn't\");\nline = line.replaceAll(\"\\\\bshould\\\\b\", \"shouldn't\");\nline = line.replaceAll(\"\\\\bShould\\\\b\", \"Shouldn't\");\nline = line.replaceAll(\"\\\\bwill\\\\b\", \"won't\");\nline = line.replaceAll(\"\\\\bWill\\\\b\", \"Won't\");\nline = line.replaceAll(\"\\\\bshall\\\\b\", \"shan't\");\nline = line.replaceAll(\"\\\\bShall\\\\b\", \"Shan't\");\nline = line.replaceAll(\"\\\\byes\\\\b\", \"no\");\nline = line.replaceAll(\"\\\\bYes\\\\b\", \"No\");\nline = line.replaceAll(\"\\\\bmust\\\\b\", \"mustn't\");\nline = line.replaceAll(\"\\\\bMust\\\\b\", \"Mustn't\");\nline = line.replaceAll(\"\\\\bneed\\\\b\", \"needn't\");\nline = line.replaceAll(\"\\\\bNeed\\\\b\", \"Needn't\");\nline = line.replaceAll(\"\\\\bhave\\\\b\", \"haven't\");\nline = line.replaceAll(\"\\\\bHave\\\\b\", \"Haven't\");\nline = line.replaceAll(\"\\\\bhas\\\\b\", \"hasn't\");\nline = line.replaceAll(\"\\\\bHas\\\\b\", \"Hasn't\");\nline = line.replaceAll(\"\\\\bwas\\\\b\", \"wasn't\");\nline = line.replaceAll(\"\\\\bWas\\\\b\", \"Wasn't\");\nline = line.replaceAll(\"\\\\bdoes\\\\b\", \"don't\");\nline = line.replaceAll(\"\\\\bDoes\\\\b\", \"Don't\");\nline = line.replaceAll(\"\\\\bany\\\\b\", \"no\");\nline = line.replaceAll(\"\\\\bAny\\\\b\", \"No\");\n"; filterString += replacer; break; case 1: // Leet translator replacer = "line = line.replaceAll(\"[oO]\", \"0\");\nline = line.replaceAll(\"[iI]\", \"1\");\nline = line.replaceAll(\"[zZ]\", \"2\");\nline = line.replaceAll(\"[eE]\", \"3\");\nline = line.replaceAll(\"[aA]\", \"4\");\nline = line.replaceAll(\"[sS]\", \"5\");\nline = line.replaceAll(\"[bB]\", \"6\");\nline = line.replaceAll(\"[tT]\", \"7\");\nline = line.replaceAll(\"[bB]\", \"8\");\nline = line.replaceAll(\"[gG]\", \"9\");\nline = line.replaceAll(\"s\\\\b\", \"z\");\n"; filterString += replacer; break; case 2: // Teenage girl translator replacer = "line = line.replaceAll(\"[,;:]\", \"!\");\nline = line.replaceAll(\"\\\\.\", \"?\");\nline+=\" and like\";\n"; filterString += replacer; break; } } } public void condenser() { double chance = Math.random(); if (chance > 0.5) return; else { int randomIndex = (int)(Math.random() * 3); switch (randomIndex) { case 0: // Removes all words that contain the letter "e" condenser = "String[] words = line.split(\"\\\\W+\");\nline=\"\";\nfor (String w: words) {\nif (w.indexOf(\"e\") == -1) line+=w+\" \";\n}\n"; filterString += condenser; break; case 1: // Removes all four-letter words condenser = "String[] words = line.split(\"\\\\W+\");\nline=\"\";\nfor (String w: words) {\nif (w.length() != 4) line+=w+\" \";\n}\n"; filterString += condenser; break; case 2: // Reduces each line to its longest word condenser = "int max = 0;\nString longWord = \"\";\nString[] words = line.split(\"\\\\W+\");\nfor (String w: words) {\nif (w.length() > max) {\nmax = w.length();\nlongWord = w;\n}\n}\nline=longWord;\n"; filterString += condenser; break; } } } public void orderer() { double chance = Math.random(); if (chance > 0.5) return; else { triggered = 1; // Returns lines in random order orderer = "while (metaFilter.size()>0) {\nint randomIndex = (int)(Math.random() * metaFilter.size());\nprintln(metaFilter.get(randomIndex));\nmetaFilter.remove(randomIndex);\n}\n"; } } public void generate() { ArrayList filterOrder = new ArrayList(); for (int i = 0; i < 4; i++) { filterOrder.add(i+1); } while (filterOrder.size() > 0) { int randomIndex = (int)(Math.random() * filterOrder.size()); int caseCounter = filterOrder.get(randomIndex); switch (caseCounter) { case 1: formatter(); filterOrder.remove(randomIndex); break; case 2: replacer(); filterOrder.remove(randomIndex); break; case 3: condenser(); filterOrder.remove(randomIndex); break; case 4: orderer(); filterOrder.remove(randomIndex); break; } } outPut(); } public void outPut() { try { PrintWriter output = new PrintWriter("myHomework.java"); output.print("import com.decontextualize.a2z.TextFilter;\nimport java.util.ArrayList;\n\npublic class myHomework extends TextFilter {\nprivate ArrayList metaFilter= new ArrayList();\npublic static void main (String args[]) {\nnew myHomework().run();\n}\n\npublic void eachLine(String line) {\n"); if (filterString.equals("") && triggered==0) { generate(); } if (triggered == 0) { output.print(filterString+"metaFilter.add(line);\n}\n\npublic void end() {\nfor (int i = 0; i