diff options
Diffstat (limited to 'tigrou')
| -rw-r--r-- | tigrou/.gitignore | 4 | ||||
| -rw-r--r-- | tigrou/declare-my-variable/declare-my-variable.tig | 6 | ||||
| -rw-r--r-- | tigrou/fibo/fibo.tig | 24 | ||||
| -rw-r--r-- | tigrou/fibo/fibo.tih | 18 | ||||
| -rw-r--r-- | tigrou/hello-tigrou/hello-tigrou.tig | 1 | ||||
| -rw-r--r-- | tigrou/how-old-am-i/how-old-am-i.tig | 2 | ||||
| -rw-r--r-- | tigrou/linked-list/linked-list.tig | 24 | ||||
| -rw-r--r-- | tigrou/linked-list/linked-list.tih | 15 | ||||
| -rw-r--r-- | tigrou/sort/sort.tig | 58 | ||||
| -rw-r--r-- | tigrou/sort/sort.tih | 24 | ||||
| -rw-r--r-- | tigrou/use-an-array/use-an-array.tig | 44 | ||||
| -rw-r--r-- | tigrou/use-an-array/use-an-array.tih | 12 | ||||
| -rw-r--r-- | tigrou/who-am-i/who-am-i.tig | 18 | ||||
| -rw-r--r-- | tigrou/who-am-i/who-am-i.tih | 8 |
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") |
