1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
import times, os
type
Cons = ref object
value: int
next: Cons
proc cons(value: int, next: Cons): Cons =
new(result)
result.value = value
result.next = next
proc create(len: int): Cons =
if len > 0:
result = cons(len, create(len - 1))
else:
result = nil
proc append(a, b: Cons): Cons =
if a == nil:
result = b
else:
result = cons(a.value, append(a.next, b))
proc reverse(a: Cons): Cons =
if a == nil:
result = nil
else:
result = append(reverse(a.next), cons(a.value, nil))
proc test() =
let time = cpuTime()
var v = reverse(create(3000))
echo "Total time: ", cpuTime() - time
for i in 1..100:
test()
|