langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
34
Task/Forward-difference/NetRexx/forward-difference.netrexx
Normal file
34
Task/Forward-difference/NetRexx/forward-difference.netrexx
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
/* NetRexx*************************************************************
|
||||
* Forward differences
|
||||
* 18.08.2012 Walter Pachl derived from Rexx
|
||||
**********************************************************************/
|
||||
Loop n=-1 To 11
|
||||
differences('90 47 58 29 22 32 55 5 55 73',n)
|
||||
End
|
||||
|
||||
method differences(a,n) public static
|
||||
--arr=Rexx[11] -- array must be declared (zero based)
|
||||
arr='' -- alternative: indexed string
|
||||
m=a.words
|
||||
Select
|
||||
When n<0 Then Say 'n is negative:' n '<' 0
|
||||
When n>m Then Say 'n is too large:' n '>' m
|
||||
Otherwise Do
|
||||
Loop i=1 To m
|
||||
arr[i]=a.word(i)
|
||||
End
|
||||
Loop i = 1 to n
|
||||
t = arr[i]
|
||||
Loop j = i+1 to m
|
||||
u = arr[j]
|
||||
arr[j] = arr[j]-t
|
||||
t = u
|
||||
end
|
||||
end
|
||||
ol=''
|
||||
Loop i=n+1 to m
|
||||
ol=ol arr[i]
|
||||
End
|
||||
Say n ol
|
||||
End
|
||||
End
|
||||
1
Task/Forward-difference/Nial/forward-difference-1.nial
Normal file
1
Task/Forward-difference/Nial/forward-difference-1.nial
Normal file
|
|
@ -0,0 +1 @@
|
|||
fd is - [rest, front]
|
||||
3
Task/Forward-difference/Nial/forward-difference-2.nial
Normal file
3
Task/Forward-difference/Nial/forward-difference-2.nial
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
b := 90 47 58 29 22 32 55 5 55 73
|
||||
4 fold fd b
|
||||
= 156 -67 1 -82 259 -305
|
||||
11
Task/Forward-difference/OCaml/forward-difference.ocaml
Normal file
11
Task/Forward-difference/OCaml/forward-difference.ocaml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
let rec forward_difference = function
|
||||
a :: (b :: _ as xs) ->
|
||||
b - a :: forward_difference xs
|
||||
| _ ->
|
||||
[]
|
||||
|
||||
let rec nth_forward_difference n xs =
|
||||
if n = 0 then
|
||||
xs
|
||||
else
|
||||
nth_forward_difference (pred n) (forward_difference xs)
|
||||
36
Task/Forward-difference/Objeck/forward-difference.objeck
Normal file
36
Task/Forward-difference/Objeck/forward-difference.objeck
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
bundle Default {
|
||||
class Test {
|
||||
function : Main(args : String[]) ~ Nil {
|
||||
a := [90.0, 47.0, 58.0, 29.0, 22.0, 32.0, 55.0, 5.0, 55.0, 73.0];
|
||||
Print(Diff(a, 1));
|
||||
Print(Diff(a, 2));
|
||||
Print(Diff(a, 9));
|
||||
}
|
||||
|
||||
function : Print(a : Float[]) ~ Nil {
|
||||
if(a <> Nil) {
|
||||
'['->Print();
|
||||
each(i : a) {
|
||||
a[i]->Print(); ','->Print();
|
||||
};
|
||||
']'->PrintLine();
|
||||
};
|
||||
}
|
||||
|
||||
function : Diff(a : Float[], n : Int) ~ Float[] {
|
||||
if (n < 0) {
|
||||
return Nil;
|
||||
};
|
||||
|
||||
for(i := 0; i < n & a->Size() > 0; i += 1;) {
|
||||
b := Float->New[a->Size() - 1];
|
||||
for(j := 0; j < b->Size(); j += 1;){
|
||||
b[j] := a[j+1] - a[j];
|
||||
};
|
||||
a := b;
|
||||
};
|
||||
|
||||
return a;
|
||||
}
|
||||
}
|
||||
}
|
||||
1
Task/Forward-difference/PARI-GP/forward-difference.pari
Normal file
1
Task/Forward-difference/PARI-GP/forward-difference.pari
Normal file
|
|
@ -0,0 +1 @@
|
|||
fd(v)=vector(#v-1,i,v[i+1]-v[i]);
|
||||
21
Task/Forward-difference/PL-I/forward-difference.pli
Normal file
21
Task/Forward-difference/PL-I/forward-difference.pli
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/* Forward differences. */ /* 23 April 2010 */
|
||||
differences: procedure options (main);
|
||||
declare a(10) fixed(10) static initial
|
||||
(7, 3, 9, 250, 300, 4, 68, 72, 154, 601);
|
||||
declare (i, j, m, n, t, u) fixed binary;
|
||||
|
||||
m = hbound(a,1);
|
||||
get (n); if n > m then signal error;
|
||||
put skip edit (a) (F(7));
|
||||
do i = 1 to n;
|
||||
t = a(i);
|
||||
do j = i+1 to m;
|
||||
u = a(j);
|
||||
a(j) = a(j) - t;
|
||||
t = u;
|
||||
end;
|
||||
put skip edit (a) (F(7));
|
||||
end;
|
||||
put skip edit ((a(i) do i = n+1 to m)) (F(9));
|
||||
|
||||
end differences;
|
||||
26
Task/Forward-difference/Pascal/forward-difference.pascal
Normal file
26
Task/Forward-difference/Pascal/forward-difference.pascal
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
Program ForwardDifferenceDemo(output);
|
||||
|
||||
procedure fowardDifference(list: array of integer);
|
||||
var
|
||||
b: array of integer;
|
||||
i, newlength: integer;
|
||||
begin
|
||||
newlength := length(list) - 1;
|
||||
if newlength > 0 then
|
||||
begin
|
||||
setlength(b, newlength);
|
||||
for i := low(b) to high(b) do
|
||||
begin
|
||||
b[i] := list[i+1] - list[i];
|
||||
write (b[i]:6);
|
||||
end;
|
||||
writeln;
|
||||
fowardDifference(b);
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
a: array [1..10] of integer = (90, 47, 58, 29, 22, 32, 55, 5, 55, 73);
|
||||
begin
|
||||
fowardDifference(a);
|
||||
end.
|
||||
2
Task/Forward-difference/Perl-6/forward-difference.pl6
Normal file
2
Task/Forward-difference/Perl-6/forward-difference.pl6
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
sub dif(@array [$, *@tail]) { @tail Z- @array }
|
||||
sub difn($array, $n) { ($array, &dif ... *)[$n] }
|
||||
20
Task/Forward-difference/Pop11/forward-difference.pop11
Normal file
20
Task/Forward-difference/Pop11/forward-difference.pop11
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
define forward_difference(l);
|
||||
lvars res = [], prev, el;
|
||||
if l = [] then
|
||||
return([]);
|
||||
endif;
|
||||
front(l) -> prev;
|
||||
for el in back(l) do
|
||||
cons(el - prev, res) -> res;
|
||||
el -> prev;
|
||||
endfor;
|
||||
rev(res);
|
||||
enddefine;
|
||||
|
||||
define nth_difference(l, n);
|
||||
lvars res = l, i;
|
||||
for i from 1 to n do
|
||||
forward_difference(res) -> res;
|
||||
endfor;
|
||||
res;
|
||||
enddefine;
|
||||
22
Task/Forward-difference/PowerShell/forward-difference.psh
Normal file
22
Task/Forward-difference/PowerShell/forward-difference.psh
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
function Forward-Difference( [UInt64] $n, [Array] $f )
|
||||
{
|
||||
$flen = $f.length
|
||||
if( $flen -gt [Math]::Max( 1, $n ) )
|
||||
{
|
||||
0..( $flen - $n - 1 ) | ForEach-Object {
|
||||
$l=0;
|
||||
for( $k = 0; $k -le $n; $k++ )
|
||||
{
|
||||
$j = 1
|
||||
for( $i = 1; $i -le $k; $i++ )
|
||||
{
|
||||
$j *= ( ( $n - $k + $i ) / $i )
|
||||
}
|
||||
$l += $j * ( 1 - 2 * ( ( $n - $k ) % 2 ) ) * $f[ $_ + $k ]
|
||||
}
|
||||
$l
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Forward-Difference 2 1,2,4,5
|
||||
|
|
@ -0,0 +1,53 @@
|
|||
Procedure forward_difference(List a())
|
||||
If ListSize(a()) <= 1
|
||||
ClearList(a()): ProcedureReturn
|
||||
EndIf
|
||||
Protected NewList b()
|
||||
CopyList(a(), b())
|
||||
LastElement(a()): DeleteElement(a())
|
||||
SelectElement(b(), 1)
|
||||
ForEach a()
|
||||
a() - b(): NextElement(b())
|
||||
Next
|
||||
EndProcedure
|
||||
|
||||
Procedure nth_difference(List a(), List b(), n)
|
||||
Protected i
|
||||
CopyList(a(), b())
|
||||
For i = 1 To n
|
||||
forward_difference(b())
|
||||
Next
|
||||
EndProcedure
|
||||
|
||||
Procedure.s display(List a())
|
||||
Protected output.s
|
||||
ForEach a()
|
||||
output + Str(a()) + ","
|
||||
Next
|
||||
ProcedureReturn RTrim(output,",")
|
||||
EndProcedure
|
||||
|
||||
DataSection
|
||||
;list data
|
||||
Data.i 10 ;element count
|
||||
Data.i 90, 47, 58, 29, 22, 32, 55, 5, 55, 73
|
||||
EndDataSection
|
||||
|
||||
;create and fill list
|
||||
Define i
|
||||
NewList a()
|
||||
Read.i i
|
||||
While i > 0
|
||||
AddElement(a()): Read.i a(): i - 1
|
||||
Wend
|
||||
|
||||
If OpenConsole()
|
||||
NewList b()
|
||||
For i = 1 To 10
|
||||
nth_difference(a(), b(), i)
|
||||
PrintN(Str(i) + " [" + display(b()) + "]")
|
||||
Next
|
||||
|
||||
Print(#CRLF$ + #CRLF$ + "Press ENTER to exit"): Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
37
Task/Forward-difference/SQL/forward-difference.sql
Normal file
37
Task/Forward-difference/SQL/forward-difference.sql
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
create table list (n integer, v real);
|
||||
insert into list values (0, 90);
|
||||
insert into list values (1, 47);
|
||||
insert into list values (2, 58);
|
||||
insert into list values (3, 29);
|
||||
insert into list values (4, 22);
|
||||
insert into list values (5, 32);
|
||||
insert into list values (6, 55);
|
||||
insert into list values (7, 5);
|
||||
insert into list values (8, 55);
|
||||
insert into list values (9, 73);
|
||||
|
||||
create view diff1 as select list.n, (select next.v from list as next where next.n = list.n + 1) - list.v as v from list;
|
||||
create view diff2 as select list.n, (select next.v from diff1 as next where next.n = list.n + 1) - list.v as v from diff1 as list;
|
||||
|
||||
select * from diff1;
|
||||
0|-43.0
|
||||
1|11.0
|
||||
2|-29.0
|
||||
3|-7.0
|
||||
4|10.0
|
||||
5|23.0
|
||||
6|-50.0
|
||||
7|50.0
|
||||
8|18.0
|
||||
9|
|
||||
select * from diff2;
|
||||
0|54.0
|
||||
1|-40.0
|
||||
2|22.0
|
||||
3|17.0
|
||||
4|13.0
|
||||
5|-73.0
|
||||
6|100.0
|
||||
7|-32.0
|
||||
8|
|
||||
9|
|
||||
33
Task/Forward-difference/Seed7/forward-difference.seed7
Normal file
33
Task/Forward-difference/Seed7/forward-difference.seed7
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
$ include "seed7_05.s7i";
|
||||
|
||||
const func array integer: forwardDifference (in array integer: data) is func
|
||||
result
|
||||
var array integer: diffResult is 0 times 0;
|
||||
local
|
||||
var integer: index is 0;
|
||||
begin
|
||||
for index range 1 to pred(length(data)) do
|
||||
diffResult &:= -data[index] + data[succ(index)];
|
||||
end for;
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var array integer: data is [] (90, 47, 58, 29, 22, 32, 55, 5, 55, 73);
|
||||
var integer: level is 0;
|
||||
var integer: number is 0;
|
||||
var boolean: firstElement is TRUE;
|
||||
begin
|
||||
for level range 0 to length(data) do
|
||||
firstElement := TRUE;
|
||||
for number range data do
|
||||
if not firstElement then
|
||||
write(", ");
|
||||
end if;
|
||||
firstElement := FALSE;
|
||||
write(number);
|
||||
end for;
|
||||
writeln;
|
||||
data := forwardDifference(data);
|
||||
end for;
|
||||
end func;
|
||||
17
Task/Forward-difference/Slate/forward-difference-1.slate
Normal file
17
Task/Forward-difference/Slate/forward-difference-1.slate
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
s@(Sequence traits) forwardDifference
|
||||
[
|
||||
s allButFirst with: s allButLast collect: #- `er
|
||||
].
|
||||
|
||||
s@(Sequence traits) forwardDifference
|
||||
"Without creating two intermediate throwaway Sequences."
|
||||
[
|
||||
result ::= s allButFirst.
|
||||
result doWithIndex: [| :nextValue :index | result at: index infect: [| :oldValue | oldValue - (s at: index)].
|
||||
result
|
||||
].
|
||||
|
||||
s@(Sequence traits) forwardDifference: n
|
||||
[
|
||||
(0 below: n) inject: s into: [| :seq :_ | seq forwardDifference]
|
||||
].
|
||||
2
Task/Forward-difference/Slate/forward-difference-2.slate
Normal file
2
Task/Forward-difference/Slate/forward-difference-2.slate
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
#data := ##(90 47 58 29 22 32 55 5 55 73).
|
||||
data keysDo: [| :index | inform: (data forwardDifference: index) printString].
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
fun forward_difference xs = ListPair.map op- (tl xs, xs)
|
||||
|
||||
fun nth_forward_difference n xs =
|
||||
if n = 0 then
|
||||
xs
|
||||
else
|
||||
nth_forward_difference (n-1) (forward_difference xs)
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
#import std
|
||||
#import nat
|
||||
#import flo
|
||||
|
||||
nth_diff "n" = rep"n" minus*typ
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
test_data = <90.,47.,58.,29.,22.,32.,55.,5.,55.,73.>
|
||||
|
||||
#show+
|
||||
|
||||
examples =
|
||||
|
||||
printf/*=*' %0.0f' <
|
||||
nth_diff6 test_data,
|
||||
nth_diff7 test_data>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
Module ForwardDifference
|
||||
|
||||
Sub Main()
|
||||
Dim lNum As New List(Of Integer)(New Integer() {90, 47, 58, 29, 22, 32, 55, 5, 55, 73})
|
||||
For i As UInteger = 0 To 9
|
||||
Console.WriteLine(String.Join(" ", (From n In Difference(i, lNum) Select String.Format("{0,5}", n)).ToArray()))
|
||||
Next
|
||||
Console.ReadKey()
|
||||
End Sub
|
||||
|
||||
Private Function Difference(ByVal Level As UInteger, ByVal Numbers As List(Of Integer)) As List(Of Integer)
|
||||
If Level >= Numbers.Count Then Throw New ArgumentOutOfRangeException("Level", "Level must be less than number of items in Numbers")
|
||||
|
||||
For i As Integer = 1 To Level
|
||||
Numbers = (From n In Enumerable.Range(0, Numbers.Count - 1) _
|
||||
Select Numbers(n + 1) - Numbers(n)).ToList()
|
||||
Next
|
||||
|
||||
Return Numbers
|
||||
End Function
|
||||
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue