summaryrefslogtreecommitdiff
path: root/TournementArena.java
diff options
context:
space:
mode:
Diffstat (limited to 'TournementArena.java')
-rw-r--r--TournementArena.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/TournementArena.java b/TournementArena.java
new file mode 100644
index 0000000..5a61c42
--- /dev/null
+++ b/TournementArena.java
@@ -0,0 +1,40 @@
+class TournementArena {
+ TournementArena(Interpreter[] vms, String[] arena) {
+ codeLen = arena[0].length();
+ this.vms = vms;
+ this.arena = arena;
+ rng = new java.util.Random();
+ }
+
+ String[] iterate() {
+ Interpreter vm = vms[rng.nextInt(vms.length)];
+ String
+ code = arena[rng.nextInt(arena.length)],
+ param = arena[rng.nextInt(arena.length)],
+ res = vm.eval(code, param);
+ arena[rng.nextInt(arena.length)] = res;
+ String [] ret = {code, param, res};
+ return ret;
+ }
+
+ public static void main(String[] args){
+ // init arena
+ Interpreter[] vms = {
+ new XorInterpreter(),
+ new ExternalInterpreter("/bin/echo")
+ };
+ String[] arena = {"00", "01", "10", "11"}; // TODO: add random bit-strings
+ TournementArena a = new TournementArena(vms, arena);
+
+ // run arena forever
+ while (true) {
+ String[] r = a.iterate();
+ System.out.println(r[0] + " ( " + r[1] + " ) -> " + r[2]);
+ }
+ }
+
+ int codeLen;
+ Interpreter[] vms;
+ String[] arena;
+ java.util.Random rng;
+}
contact: Jan Huwald // Impressum