;Task: Provide code that produces a list of numbers which is the nth order forward difference, given a non-negative integer (specifying the order) and a list of numbers. The first-order forward difference of a list of numbers '''A''' is a new list '''B''', where Bn = An+1 - An. List '''B''' should have one fewer element as a result. The second-order forward difference of '''A''' will be:
tdefmodule Diff do def forward(arr,i\\1) do forward(arr,[],i) end def forward([_|[]],diffs,i) do if i == 1 do IO.inspect diffs else forward(diffs,[],i-1) end end def forward([val1|[val2|vals]],diffs,i) do forward([val2|vals],diffs++[val2-val1],i) end endThe same as the first-order forward difference of '''B'''. That new list will have two fewer elements than '''A''' and one less than '''B'''. The goal of this task is to repeat this process up to the desired order. For a more formal description, see the related [http://mathworld.wolfram.com/ForwardDifference.html Mathworld article]. ;Algorithmic options: * Iterate through all previous forward differences and re-calculate a new array each time. * Use this formula (from [[wp:Forward difference|Wikipedia]]): ::: ::: ([[Pascal's Triangle]] may be useful for this option.)