diff options
author | Frederick Yin <fkfd@fkfd.me> | 2022-08-16 11:54:23 +0800 |
---|---|---|
committer | Frederick Yin <fkfd@fkfd.me> | 2022-08-16 11:54:23 +0800 |
commit | 9542deeb483a00b6fabed7574720926ce97d7511 (patch) | |
tree | 0f2c1f72c03dd4693fd59df67544d2a4dddc5494 /projects/11/ComplexArrays | |
parent | 9c0cb1d1c32724fc95ac9548e4f8d873d3adaccc (diff) |
Projects, 01-06 completed
Diffstat (limited to 'projects/11/ComplexArrays')
-rw-r--r-- | projects/11/ComplexArrays/Main.jack | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/projects/11/ComplexArrays/Main.jack b/projects/11/ComplexArrays/Main.jack new file mode 100644 index 0000000..fe51c20 --- /dev/null +++ b/projects/11/ComplexArrays/Main.jack @@ -0,0 +1,70 @@ +// This file is part of www.nand2tetris.org
+// and the book "The Elements of Computing Systems"
+// by Nisan and Schocken, MIT Press.
+// File name: projects/11/ComplexArrays/Main.jack
+
+/**
+ * Performs several complex array processing tests.
+ * For each test, the expected result is printed, along with the
+ * actual result. In each test, the two results should be equal.
+ */
+class Main {
+
+ function void main() {
+ var Array a, b, c;
+
+ let a = Array.new(10);
+ let b = Array.new(5);
+ let c = Array.new(1);
+
+ let a[3] = 2;
+ let a[4] = 8;
+ let a[5] = 4;
+ let b[a[3]] = a[3] + 3; // b[2] = 5
+ let a[b[a[3]]] = a[a[5]] * b[((7 - a[3]) - Main.double(2)) + 1]; // a[5] = 8 * 5 = 40
+ let c[0] = null;
+ let c = c[0];
+
+ do Output.printString("Test 1: expected result: 5; actual result: ");
+ do Output.printInt(b[2]);
+ do Output.println();
+ do Output.printString("Test 2: expected result: 40; actual result: ");
+ do Output.printInt(a[5]);
+ do Output.println();
+ do Output.printString("Test 3: expected result: 0; actual result: ");
+ do Output.printInt(c);
+ do Output.println();
+
+ let c = null;
+
+ if (c = null) {
+ do Main.fill(a, 10);
+ let c = a[3];
+ let c[1] = 33;
+ let c = a[7];
+ let c[1] = 77;
+ let b = a[3];
+ let b[1] = b[1] + c[1]; // b[1] = 33 + 77 = 110;
+ }
+
+ do Output.printString("Test 4: expected result: 77; actual result: ");
+ do Output.printInt(c[1]);
+ do Output.println();
+ do Output.printString("Test 5: expected result: 110; actual result: ");
+ do Output.printInt(b[1]);
+ do Output.println();
+ return;
+ }
+
+ function int double(int a) {
+ return a * 2;
+ }
+
+ function void fill(Array a, int size) {
+ while (size > 0) {
+ let size = size - 1;
+ let a[size] = Array.new(3);
+ }
+ return;
+ }
+}
|