summaryrefslogtreecommitdiff
path: root/tigrou
diff options
context:
space:
mode:
Diffstat (limited to 'tigrou')
-rw-r--r--tigrou/.gitignore4
-rw-r--r--tigrou/declare-my-variable/declare-my-variable.tig6
-rw-r--r--tigrou/fibo/fibo.tig24
-rw-r--r--tigrou/fibo/fibo.tih18
-rw-r--r--tigrou/hello-tigrou/hello-tigrou.tig1
-rw-r--r--tigrou/how-old-am-i/how-old-am-i.tig2
-rw-r--r--tigrou/linked-list/linked-list.tig24
-rw-r--r--tigrou/linked-list/linked-list.tih15
-rw-r--r--tigrou/sort/sort.tig58
-rw-r--r--tigrou/sort/sort.tih24
-rw-r--r--tigrou/use-an-array/use-an-array.tig44
-rw-r--r--tigrou/use-an-array/use-an-array.tih12
-rw-r--r--tigrou/who-am-i/who-am-i.tig18
-rw-r--r--tigrou/who-am-i/who-am-i.tih8
14 files changed, 258 insertions, 0 deletions
diff --git a/tigrou/.gitignore b/tigrou/.gitignore
new file mode 100644
index 0000000..80cdab6
--- /dev/null
+++ b/tigrou/.gitignore
@@ -0,0 +1,4 @@
+rtc
+a.out
+result
+*.tar
diff --git a/tigrou/declare-my-variable/declare-my-variable.tig b/tigrou/declare-my-variable/declare-my-variable.tig
new file mode 100644
index 0000000..cb8e047
--- /dev/null
+++ b/tigrou/declare-my-variable/declare-my-variable.tig
@@ -0,0 +1,6 @@
+let
+ var s := "My printed variable"
+in
+ print(s);
+ print("\n")
+end
diff --git a/tigrou/fibo/fibo.tig b/tigrou/fibo/fibo.tig
new file mode 100644
index 0000000..afba6cf
--- /dev/null
+++ b/tigrou/fibo/fibo.tig
@@ -0,0 +1,24 @@
+let
+ import "fibo.tih"
+ function test_fibo(n : int, expected: int) =
+ (
+ print("Testing fibo(");
+ print_int(n);
+ print(")...\nExpected : ");
+ print_int(expected);
+ print("\ngot : ");
+ print_int(fibo(n));
+ print("\n\n")
+ )
+in
+ test_fibo(-1, -1);
+ test_fibo(0, 0);
+ test_fibo(1, 1);
+ test_fibo(2, 1);
+ test_fibo(5, 5);
+ test_fibo(10, 55);
+
+ /* You may fail these if you use recursion. Go iterative. */
+ test_fibo(42, 267914296);
+ test_fibo(45, 1134903170)
+end
diff --git a/tigrou/fibo/fibo.tih b/tigrou/fibo/fibo.tih
new file mode 100644
index 0000000..72123a6
--- /dev/null
+++ b/tigrou/fibo/fibo.tih
@@ -0,0 +1,18 @@
+function fibo(n : int) : int =
+ if n < 0 then
+ -1
+ else
+ if n <= 1 then
+ n
+ else
+ let
+ var curr := 0
+ var prev1 := 1
+ var prev2 := 0
+ in
+ (for i := 2 to n do
+ (curr := prev1 + prev2;
+ prev2 := prev1;
+ prev1 := curr));
+ curr
+ end
diff --git a/tigrou/hello-tigrou/hello-tigrou.tig b/tigrou/hello-tigrou/hello-tigrou.tig
new file mode 100644
index 0000000..699a15c
--- /dev/null
+++ b/tigrou/hello-tigrou/hello-tigrou.tig
@@ -0,0 +1 @@
+print("Hi Tigrou!\n")
diff --git a/tigrou/how-old-am-i/how-old-am-i.tig b/tigrou/how-old-am-i/how-old-am-i.tig
new file mode 100644
index 0000000..4c4632c
--- /dev/null
+++ b/tigrou/how-old-am-i/how-old-am-i.tig
@@ -0,0 +1,2 @@
+(print_int(42);
+print("\n"))
diff --git a/tigrou/linked-list/linked-list.tig b/tigrou/linked-list/linked-list.tig
new file mode 100644
index 0000000..04c8a29
--- /dev/null
+++ b/tigrou/linked-list/linked-list.tig
@@ -0,0 +1,24 @@
+let
+ import "linked-list.tih"
+ var list := node { value = 0, next = nil }
+
+ function test_lists(expected: string) =
+ (
+ print(concat("Expected : { ", expected));
+ print(" }\ngot : { ");
+ display(list);
+ print(" }\n\n")
+ )
+in
+ test_lists("0");
+
+ print("Adding '1' ...\n");
+ append(list, 1);
+
+ test_lists("0 -> 1");
+
+ print("Adding '2' ...\n");
+ append(list, 2);
+
+ test_lists("0 -> 1 -> 2")
+end
diff --git a/tigrou/linked-list/linked-list.tih b/tigrou/linked-list/linked-list.tih
new file mode 100644
index 0000000..b890f3a
--- /dev/null
+++ b/tigrou/linked-list/linked-list.tih
@@ -0,0 +1,15 @@
+type node = {value : int, next : node}
+function append(list: node, element: int) =
+ if list.next = nil then
+ list.next := node{value = element, next = nil}
+ else
+ append(list.next, element)
+
+function display(list: node) =
+ if list <> nil then
+ (
+ print_int(list.value);
+ (if list.next <> nil then
+ print(" -> "));
+ display(list.next)
+ )
diff --git a/tigrou/sort/sort.tig b/tigrou/sort/sort.tig
new file mode 100644
index 0000000..e2679ce
--- /dev/null
+++ b/tigrou/sort/sort.tig
@@ -0,0 +1,58 @@
+let
+ import "sort.tih"
+ var array_1 := int_array[5] of 0
+ var array_2 := int_array[4] of 0
+ var array_3 := int_array[4] of 0
+
+ var array_1_sorted := int_array[5] of 0
+ var array_2_sorted := int_array[4] of 0
+ var array_3_sorted := int_array[4] of 0
+
+in
+ array_1[0] := -14; array_1_sorted[0] := -18;
+ array_1[1] := 16; array_1_sorted[1] := -14;
+ array_1[2] := -10; array_1_sorted[2] := -10;
+ array_1[3] := 12; array_1_sorted[3] := 12;
+ array_1[4] := -18; array_1_sorted[4] := 16;
+
+ array_2[0] := 21; array_2_sorted[0] := 21;
+ array_2[1] := 22; array_2_sorted[1] := 22;
+ array_2[2] := 23; array_2_sorted[2] := 23;
+ array_2[3] := 24; array_2_sorted[3] := 24;
+
+ array_3[0] := 39; array_3_sorted[0] := 36;
+ array_3[1] := 38; array_3_sorted[1] := 37;
+ array_3[2] := 37; array_3_sorted[2] := 38;
+ array_3[3] := 36; array_3_sorted[3] := 39;
+
+ let
+ function test_sort(arr: int_array, size: int, expected: int_array) =
+ let
+ function print_array(arr: int_array) =
+ (
+ print("[ ");
+ for i := 0 to size - 1 do
+ (
+ print_int(arr[i]);
+ print(" ")
+ );
+ print("]")
+ )
+ in
+ print("Sorting array ");
+ print_array(arr);
+
+ sort(arr, size);
+
+ print("\nExpected : ");
+ print_array(expected);
+ print("\ngot : ");
+ print_array(arr);
+ print("\n\n")
+ end
+ in
+ test_sort(array_1, 5, array_1_sorted);
+ test_sort(array_2, 4, array_2_sorted);
+ test_sort(array_3, 4, array_3_sorted)
+ end
+end
diff --git a/tigrou/sort/sort.tih b/tigrou/sort/sort.tih
new file mode 100644
index 0000000..c601fe3
--- /dev/null
+++ b/tigrou/sort/sort.tih
@@ -0,0 +1,24 @@
+type int_array = array of int
+function sort(a : int_array, size : int) =
+ if size > 0 then
+ (
+ let var swapped := 0
+ in
+ for i := 0 to size do
+ (
+ swapped := 0;
+ (for j := 1 to size - i - 1 do
+ if a[j - 1] > a[j] then
+ (
+ (let var tmp := a[j - 1]
+ in
+ a[j - 1] := a[j];
+ a[j] := tmp
+ end);
+ swapped := 1
+ ));
+ if swapped = 0 then
+ break
+ )
+ end
+ )
diff --git a/tigrou/use-an-array/use-an-array.tig b/tigrou/use-an-array/use-an-array.tig
new file mode 100644
index 0000000..20b4670
--- /dev/null
+++ b/tigrou/use-an-array/use-an-array.tig
@@ -0,0 +1,44 @@
+let
+ import "use-an-array.tih"
+ var array_1 := int_array[5] of 0
+ var array_2 := int_array[4] of 0
+ var array_3 := int_array[4] of 0
+
+in
+ array_1[0] := 14;
+ array_1[1] := 16;
+ array_1[2] := 18;
+ array_1[3] := 12;
+ array_1[4] := 18;
+
+ array_2[0] := 21;
+ array_2[1] := 22;
+ array_2[2] := 23;
+ array_2[3] := 24;
+
+ array_3[0] := 39;
+ array_3[1] := 38;
+ array_3[2] := 37;
+ array_3[3] := 36;
+
+ let
+ function test_max_search(arr: int_array, size: int, expected: int) =
+ (
+ print("Looking for maximum's index in array\n[ ");
+ for i := 0 to size - 1 do
+ (
+ print_int(arr[i]);
+ print(" ")
+ );
+ print("]\nExpected : ");
+ print_int(expected);
+ print("\ngot : ");
+ print_int(max_search(arr, size));
+ print("\n\n")
+ )
+ in
+ test_max_search(array_1, 5, 2);
+ test_max_search(array_2, 4, 3);
+ test_max_search(array_3, 4, 0)
+ end
+end
diff --git a/tigrou/use-an-array/use-an-array.tih b/tigrou/use-an-array/use-an-array.tih
new file mode 100644
index 0000000..55a7d5a
--- /dev/null
+++ b/tigrou/use-an-array/use-an-array.tih
@@ -0,0 +1,12 @@
+type int_array = array of int
+function max_search(a : int_array, size : int) : int =
+ if size <= 0 then -1
+ else
+ let
+ var maxi := 0
+ in
+ (for i := 1 to size - 1 do
+ if a[maxi] < a[i] then
+ maxi := i);
+ maxi
+ end
diff --git a/tigrou/who-am-i/who-am-i.tig b/tigrou/who-am-i/who-am-i.tig
new file mode 100644
index 0000000..0dbb646
--- /dev/null
+++ b/tigrou/who-am-i/who-am-i.tig
@@ -0,0 +1,18 @@
+let
+ import "who-am-i.tih"
+in
+ print("Expected : TIGROS\ngot : ");
+ who_am_i(2);
+ print("\n");
+
+ print("Expected : TIGROU\ngot : ");
+ who_am_i(3);
+ print("\n");
+
+ print("Expected : TIGROU\ngot : ");
+ who_am_i(5);
+ print("\n");
+
+ print("Expected : TIGER\ngot : ");
+ who_am_i(42)
+end
diff --git a/tigrou/who-am-i/who-am-i.tih b/tigrou/who-am-i/who-am-i.tih
new file mode 100644
index 0000000..08b7e9c
--- /dev/null
+++ b/tigrou/who-am-i/who-am-i.tih
@@ -0,0 +1,8 @@
+function who_am_i(age : int) =
+ if age <= 2 then
+ print("TIGROS\n")
+ else
+ if age <= 5 then
+ print("TIGROU\n")
+ else
+ print("TIGER\n")