@@ -19,78 +19,15 @@ public Editor()
1919 {
2020 chipList = new LinkedList <>();
2121
22- /*createChip("XOR", Chip.Defaults.NONE);
23- Chip x = getChip("XOR");
24- x.addChip(new Chip("AND1", Chip.Defaults.AND)).addChip(new Chip("AND2", Chip.Defaults.AND)).addChip(new Chip("OR", Chip.Defaults.OR)).addChip(new Chip("NOT", Chip.Defaults.NOT));
25- x.addInput("A");
26- x.addInput("B");
27- x.getInput("A").activated = true;
28- //x.getInput("B").activated = true;
29- x.addOutput("C");
30-
31- x.connectIn("A", "OR", "A");
32- x.connectIn("B", "OR", "B");
33- x.connectIn("A", "AND1", "A");
34- x.connectIn("B", "AND1", "B");
35- x.interconnect("AND1", "C", "NOT", "A");
36- x.interconnect("OR", "C", "AND2", "A");
37- x.interconnect("NOT", "B", "AND2", "B");
38- x.connectOut("AND2", "C", "C");
39-
40- runSimulation(x);
41- pinOut(x);
42- System.out.println(x.getOutput("C").activated);
43-
44- createChip("2AND", Chip.Defaults.NONE);
45- Chip c = getChip("2AND");
46- c.addChip(new Chip("AND1", Chip.Defaults.AND)).addChip(new Chip("AND2",Chip.Defaults.AND)).addChip(new Chip("AND3",Chip.Defaults.AND));
47- c.addOutput("Out");
48- for(int i = 0; i < 4; i++) {
49- c.addInput("In" + (i + 1));
50- //c.getInput("In" + (i + 1)).activated = true;
51- }
52- c.connectIn("In1", "AND1", "A");
53- c.connectIn("In2", "AND1", "B");
54- c.connectIn("In3", "AND2", "A");
55- c.connectIn("In4", "AND2", "B");
56- c.interconnect("AND1", "C", "AND3", "A");
57- c.interconnect("AND2", "C", "AND3", "B");
58- c.connectOut("AND3", "C", "Out");
59-
60- runSimulation(c);
61- pinOut(c);
62- System.out.println(c.getOutput("Out").activated); */
63-
64- /*loadFromJson("2AND");
65-
66- createChip("Test", Chip.Defaults.NONE);
67- Chip d = getChip("Test");
68- d.addChip(getChip("2AND")).addChip(new Chip("AND1", Chip.Defaults.AND));
69- d.addOutput("Out");
70- for(int i = 0; i < 5; i++) {
71- d.addInput("In" + (i + 1));
72- d.getInput("In" + (i + 1)).activated = true;
73- }
74- d.connectIn("In1", "2AND", "In1");
75- d.connectIn("In2", "2AND", "In2");
76- d.connectIn("In3", "2AND", "In3");
77- d.connectIn("In4", "2AND", "In4");
78- d.connectIn("In5", "AND1", "B");
79- d.interconnect("2AND", "Out", "AND1", "A");
80- d.connectOut("AND1", "C", "Out");
81-
82- runSimulation(d);
83- pinOut(d);
84- System.out.println(d.getOutput("Out").activated);
85-
86- saveChipToFile(d); */
22+ //saveChipToFile(d);
8723 Chip e = loadFromJson ("Test" );
8824 for (int i = 0 ; i < 5 ; i ++) {
8925 e .getInput ("In" + (i + 1 )).activated = true ;
9026 }
91- runSimulation (e );
27+ // runSimulation(e);
9228 pinOut (e );
93- System .out .println (e .getOutput ("Out" ).activated );
29+ //System.out.println(e.getOutput("Out").activated);
30+ printTruthTable (e );
9431 }
9532
9633 public void saveChipToFile (Chip c ) {
@@ -375,6 +312,27 @@ public void pinOutOld(Chip c)
375312 }
376313 }
377314
315+ public void printTruthTable (Chip c ) {
316+ int totalCombinations = 1 << c .iPins .size (); // 2^n combinations
317+ boolean [][] truthTable = new boolean [totalCombinations ][c .iPins .size () + c .oPins .size ()];
318+
319+ for (int i = 0 ; i < totalCombinations ; i ++) {
320+ for (int j = 0 ; j < c .iPins .size (); j ++) {
321+ truthTable [i ][j ] = (i & (1 << j )) != 0 ; // Extract bit as boolean
322+ }
323+ }
324+
325+ for (int i = 0 ; i < truthTable .length ; i ++) {
326+ for (int j = 0 ; j < c .iPins .size (); j ++) {
327+ c .iPins .get (j ).activated = truthTable [i ][j ];
328+ }
329+ runSimulation (c );
330+ for (int j = 0 ; j < c .oPins .size (); j ++) {
331+ truthTable [i ][c .iPins .size () + j ] = c .oPins .get (j ).activated ;
332+ }
333+ }
334+ }
335+
378336 public void pinOut (Chip c ) {
379337 System .out .println (c .name + ":" );
380338 int longestPinNameL = 0 ;
0 commit comments