gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemdiff --git a/Stabla/Primeri za test/StabloIORandom.java b/Stabla/Primeri za test/StabloIORandom.java
--- /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