19 lines
520 B
Plaintext
19 lines
520 B
Plaintext
import "./fmt" for Fmt
|
|
|
|
var forwardDiff = Fn.new { |a, order|
|
|
if (order < 0) Fiber.abort("Order must be a non-negative integer.")
|
|
if (a.count == 0) return
|
|
Fmt.print(" 0: $5d", a)
|
|
if (a.count == 1) return
|
|
if (order == 0) return
|
|
for (o in 1..order) {
|
|
var b = List.filled(a.count-1, 0)
|
|
for (i in 0...b.count) b[i] = a[i+1] - a[i]
|
|
Fmt.print("$2d: $5d", o, b)
|
|
if (b.count == 1) return
|
|
a = b
|
|
}
|
|
}
|
|
|
|
forwardDiff.call([90, 47, 58, 29, 22, 32, 55, 5, 55, 73], 9)
|