gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Stabla, dodati primeri algoritama nad stablima
[spa2-materijali.git] / Stabla / Primeri za test / StabloIORandom.java
diff --git a/Stabla/Primeri za test/StabloIORandom.java b/Stabla/Primeri za test/StabloIORandom.java
new file mode 100644 (file)
index 0000000..d3a98ca
--- /dev/null
@@ -0,0 +1,75 @@
+import java.math.BigInteger;\r
+import java.util.Random;\r
+import java.util.concurrent.atomic.AtomicInteger;\r
+\r
+import org.svetovid.io.SvetovidReader;\r
+import org.svetovid.io.SvetovidWriter;\r
+\r
+public class StabloIORandom implements StabloIO {\r
+\r
+    protected long seed;\r
+    protected int length;\r
+    protected int depth;\r
+\r
+    public StabloIORandom() {\r
+        this(System.currentTimeMillis());\r
+    }\r
+\r
+    public StabloIORandom(long seed) {\r
+        this(seed, 5, 10);\r
+    }\r
+\r
+    public StabloIORandom(long seed, int length, int depth) {\r
+        this.seed = seed;\r
+        this.length = length;\r
+        this.depth = depth;\r
+    }\r
+\r
+    public long getSeed() {\r
+        return seed;\r
+    }\r
+\r
+    public void setSeed(long seed) {\r
+        this.seed = seed;\r
+    }\r
+\r
+    public int getLength() {\r
+        return length;\r
+    }\r
+\r
+    public void setLength(int length) {\r
+        this.length = length;\r
+    }\r
+\r
+    public int getDepth() {\r
+        return depth;\r
+    }\r
+\r
+    public void setDepth(int depth) {\r
+        this.depth = depth;\r
+    }\r
+\r
+    @Override\r
+    public Stablo readStablo(SvetovidReader in) {\r
+        Random random = new Random(seed);\r
+        AtomicInteger sequence = new AtomicInteger();\r
+        Stablo stablo = readStablo(random, sequence, length, depth);\r
+        return stablo;\r
+    }\r
+\r
+    private Stablo readStablo(Random random, AtomicInteger sequence, int length, int depth) {\r
+       if (depth <= 0) {\r
+               return null;\r
+       }\r
+        int id = sequence.addAndGet(1 + random.nextInt(9));\r
+        String vrednost = new BigInteger(length, random).toString(36);\r
+        Stablo desni = readStablo(random, sequence, length + random.nextInt(5), depth - random.nextInt(5));\r
+        Stablo levi = readStablo(random, sequence, length + random.nextInt(5), depth - random.nextInt(5));\r
+        return new Stablo(id, vrednost, levi, desni);\r
+    }\r
+\r
+    @Override\r
+    public void printStablo(SvetovidWriter out, Stablo stablo) {\r
+        throw new UnsupportedOperationException();\r
+    }\r
+}\r
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner