gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Stabla, dodati komentari i ideje za veliki test
[spa2-materijali.git] / Stabla / Primeri za test / StabloIORandom.java
1 import java.math.BigInteger;
2 import java.util.Random;
3 import java.util.concurrent.atomic.AtomicInteger;
5 import org.svetovid.io.SvetovidReader;
6 import org.svetovid.io.SvetovidWriter;
8 /*
9 * Ova klasa sluzi za generisanje random stabala. Nije potrebno znati je,
10 * i bice data, prilikom izrade prakticnih zadataka.
11 */
12 public class StabloIORandom implements StabloIO {
14 protected long seed;
15 protected int length;
16 protected int depth;
18 public StabloIORandom() {
19 this(System.currentTimeMillis());
20 }
22 public StabloIORandom(long seed) {
23 this(seed, 5, 10);
24 }
26 public StabloIORandom(long seed, int length, int depth) {
27 this.seed = seed;
28 this.length = length;
29 this.depth = depth;
30 }
32 public long getSeed() {
33 return seed;
34 }
36 public void setSeed(long seed) {
37 this.seed = seed;
38 }
40 public int getLength() {
41 return length;
42 }
44 public void setLength(int length) {
45 this.length = length;
46 }
48 public int getDepth() {
49 return depth;
50 }
52 public void setDepth(int depth) {
53 this.depth = depth;
54 }
56 @Override
57 public Stablo readStablo(SvetovidReader in) {
58 Random random = new Random(seed);
59 AtomicInteger sequence = new AtomicInteger();
60 Stablo stablo = readStablo(random, sequence, length, depth);
61 return stablo;
62 }
64 private Stablo readStablo(Random random, AtomicInteger sequence, int length, int depth) {
65 if (depth <= 0) {
66 return null;
67 }
68 int id = sequence.addAndGet(1 + random.nextInt(9));
69 String vrednost = new BigInteger(length, random).toString(36);
70 Stablo desni = readStablo(random, sequence, length + random.nextInt(5), depth - random.nextInt(5));
71 Stablo levi = readStablo(random, sequence, length + random.nextInt(5), depth - random.nextInt(5));
72 return new Stablo(id, vrednost, levi, desni);
73 }
75 @Override
76 public void printStablo(SvetovidWriter out, Stablo stablo) {
77 throw new UnsupportedOperationException();
78 }
79 }
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner