refactoring of the instruction table; removed unused instructions PUSHTYPTYP and ERROR; new modulo operator %; new examples fibonacci.noja and isprime.noja
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
|
||||
fun fibonacci(n: int) {
|
||||
|
||||
if n < 0:
|
||||
error("Only non-negative integers allowed");
|
||||
|
||||
if n == 0 or n == 1:
|
||||
return 1;
|
||||
|
||||
if n == 2:
|
||||
return 2;
|
||||
|
||||
return fibonacci(n-1)
|
||||
+ fibonacci(n-2);
|
||||
}
|
||||
|
||||
print(fibonacci(10), "\n");
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
fun isPrime(n: int) {
|
||||
prime = true; # First assumption
|
||||
if n < 3: {
|
||||
if n == 2:
|
||||
prime = true;
|
||||
else
|
||||
prime = false;
|
||||
} else {
|
||||
i = 2;
|
||||
sqrt = math.sqrt(n/1.0);
|
||||
do {
|
||||
if n % i == 0: {
|
||||
prime = false;
|
||||
break;
|
||||
}
|
||||
i = i+1;
|
||||
} while i <= sqrt;
|
||||
}
|
||||
return prime;
|
||||
}
|
||||
|
||||
numbers = [
|
||||
[-1, false],
|
||||
[ 0, false],
|
||||
[ 1, false],
|
||||
[ 2, true],
|
||||
[ 3, true],
|
||||
[ 4, false],
|
||||
[ 5, true],
|
||||
[ 6, false],
|
||||
[ 7, true],
|
||||
[ 9, false],
|
||||
[10, false],
|
||||
[11, true],
|
||||
[12, false],
|
||||
[13, true],
|
||||
[14, false],
|
||||
[15, false]
|
||||
];
|
||||
|
||||
i = 0;
|
||||
while i < count(numbers): {
|
||||
num = numbers[i][0];
|
||||
exp = numbers[i][1];
|
||||
res = isPrime(numbers[i][0]);
|
||||
print("isPrime(", num, ") == ", res, "\n");
|
||||
assert(res == exp);
|
||||
i = i+1;
|
||||
}
|
||||
Reference in New Issue
Block a user