|
|
|
// Raw wrapper around _printf builtin function.
|
|
|
|
// Writes the given content to stdout
|
|
|
|
fn print(arg: string) {
|
|
|
|
_printf(arg)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Like print(), but with an extra newline ('\n') character
|
|
|
|
fn println(msg: string) {
|
|
|
|
print(msg + "\n")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Exit the program immediately
|
|
|
|
fn exit(code: int) {
|
|
|
|
_exit(code)
|
|
|
|
}
|
|
|
|
|
|
|
|
fn assert(condition: bool) {
|
|
|
|
if condition == false {
|
|
|
|
println("Assertion failed")
|
|
|
|
exit(1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Prints the size of an array
|
|
|
|
fn len(arr: int[]): int {
|
|
|
|
let c: int = 0
|
|
|
|
while arr[c] {
|
|
|
|
c += 1
|
|
|
|
}
|
|
|
|
|
|
|
|
return c
|
|
|
|
}
|
|
|
|
|
|
|
|
// Reverses an array
|
|
|
|
// TODO: fix me!
|
|
|
|
fn rev(arr: int[]): int[] {
|
|
|
|
|
|
|
|
let l: int = len(arr)
|
|
|
|
let new_arr: int[] = []
|
|
|
|
|
|
|
|
let i: int = 0
|
|
|
|
let j: int = l
|
|
|
|
while i < l {
|
|
|
|
new_arr[i] = arr[j]
|
|
|
|
i = i - 1
|
|
|
|
j = j - 1
|
|
|
|
}
|
|
|
|
|
|
|
|
return new_arr
|
|
|
|
}
|