Data update
This commit is contained in:
parent
8e4e15fa56
commit
72eb4943cb
1853 changed files with 35514 additions and 9441 deletions
8
Task/Bell-numbers/BQN/bell-numbers.bqn
Normal file
8
Task/Bell-numbers/BQN/bell-numbers.bqn
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
Bell ← {(+`⊢´⊸∾)⍟(↕𝕩)⋈1}
|
||||
|
||||
•Out "First 15 Bell numbers:"
|
||||
•Show ⊑¨ Bell 15
|
||||
|
||||
•Out ""
|
||||
•Out "First 10 rows of the Bell triangle:"
|
||||
•Show¨ Bell 10
|
||||
51
Task/Bell-numbers/Forth/bell-numbers.fth
Normal file
51
Task/Bell-numbers/Forth/bell-numbers.fth
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
: triangle-allocate ( u -- addr )
|
||||
dup 1+ * 2/ cells dup
|
||||
allocate abort" out of memory"
|
||||
tuck swap erase ;
|
||||
|
||||
: triangle-deallocate ( addr -- )
|
||||
free abort" memory deallocation error" ;
|
||||
|
||||
: triangle-row-address ( addr u -- addr )
|
||||
dup 1+ * 2/ cells + ;
|
||||
|
||||
: bell-triangle-row ( addr u -- )
|
||||
tuck 1- triangle-row-address
|
||||
2dup swap cells +
|
||||
dup 1 cells - @ over !
|
||||
rot 0 ?do
|
||||
dup @ >r over @ r> + >r
|
||||
cell+ r> over !
|
||||
swap cell+ swap
|
||||
loop 2drop ;
|
||||
|
||||
: bell-triangle ( u -- addr )
|
||||
dup triangle-allocate
|
||||
dup 1 swap !
|
||||
swap 1 ?do
|
||||
dup i bell-triangle-row
|
||||
loop ;
|
||||
|
||||
: print-bell-numbers ( addr u -- )
|
||||
0 ?do
|
||||
dup i triangle-row-address @ . cr
|
||||
loop drop ;
|
||||
|
||||
: print-bell-row ( addr u -- )
|
||||
tuck triangle-row-address swap
|
||||
1+ 0 ?do
|
||||
dup @ . cell+
|
||||
loop drop cr ;
|
||||
|
||||
: main ( -- )
|
||||
15 bell-triangle
|
||||
." First 15 Bell numbers:" cr
|
||||
dup 15 print-bell-numbers cr
|
||||
." First 10 rows of the Bell triangle:" cr
|
||||
10 0 do
|
||||
dup i print-bell-row
|
||||
loop
|
||||
triangle-deallocate ;
|
||||
|
||||
main
|
||||
bye
|
||||
17
Task/Bell-numbers/Haskell/bell-numbers-5.hs
Normal file
17
Task/Bell-numbers/Haskell/bell-numbers-5.hs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import Data.Ratio ((%), numerator)
|
||||
|
||||
infixl 7 *.
|
||||
(*.) :: Num a => a -> [a] -> [a]
|
||||
x *. (p:ps) = x*p : x*.ps
|
||||
|
||||
instance Num a => Num [a] where
|
||||
negate = map negate
|
||||
(+) = zipWith (+)
|
||||
(*) (p:ps) (q:qs) = p*q : ((p*.qs) + ps*(q:qs))
|
||||
fromInteger n = fromInteger n:repeat 0
|
||||
|
||||
instance (Eq a, Fractional a) => Fractional [a] where
|
||||
(/) (0:ps) (0:qs) = ps/qs
|
||||
(/) (p:ps) (q:qs) = let r=p/q in r : (ps - r*.qs)/(q:qs)
|
||||
|
||||
fromRational q = fromRational q:repeat 0
|
||||
2
Task/Bell-numbers/Haskell/bell-numbers-6.hs
Normal file
2
Task/Bell-numbers/Haskell/bell-numbers-6.hs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
expseq :: [Rational] -> [Rational]
|
||||
expseq ps = zipWith (\p q -> p*fromInteger q) ps (scanl (*) 1 [1..])
|
||||
3
Task/Bell-numbers/Haskell/bell-numbers-7.hs
Normal file
3
Task/Bell-numbers/Haskell/bell-numbers-7.hs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
infixr 9 |>
|
||||
(|>) :: (Eq a, Num a) => [a] -> [a] -> [a]
|
||||
(p:ps) |> (0:qs) = p : qs*(ps |> (0:qs))
|
||||
11
Task/Bell-numbers/Haskell/bell-numbers-8.hs
Normal file
11
Task/Bell-numbers/Haskell/bell-numbers-8.hs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
exp1 :: [Rational]
|
||||
exp1 = 0 : map (1%) factorials
|
||||
where
|
||||
factorials = scanl (*) 1 [2..]
|
||||
|
||||
exps :: [Rational]
|
||||
exps = 1 : zipWith (*) exps [ 1%n | n <- [1..] ]
|
||||
|
||||
bell :: [Integer]
|
||||
bell = map numerator
|
||||
(expseq (exps |> exp1))
|
||||
4
Task/Bell-numbers/Haskell/bell-numbers-9.hs
Normal file
4
Task/Bell-numbers/Haskell/bell-numbers-9.hs
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
ghci> take 15 bell
|
||||
[1,1,2,5,15,52,203,877,4140,21147,115975,678570,4213597,27644437,190899322]
|
||||
ghci> bell !! 49
|
||||
10726137154573358400342215518590002633917247281
|
||||
16
Task/Bell-numbers/Miranda/bell-numbers.miranda
Normal file
16
Task/Bell-numbers/Miranda/bell-numbers.miranda
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
main :: [sys_message]
|
||||
main = [Stdout "First 15 and 50th Bell numbers:\n",
|
||||
Stdout (lay [(rjustify 2 (show i)) ++ ": " ++ show (bell_numbers ! i)
|
||||
| i <- [1..15] ++ [50]]),
|
||||
Stdout "\nFirst 10 rows of the Bell triangle:\n",
|
||||
Stdout (lay [concat [rjustify 7 (show n) | n <- row]
|
||||
| row <- take 10 bell_triangle])
|
||||
]
|
||||
|
||||
|
||||
bell_numbers :: [num]
|
||||
bell_numbers = map last bell_triangle
|
||||
|
||||
bell_triangle :: [[num]]
|
||||
bell_triangle = iterate bell_step [1]
|
||||
where bell_step row = scan (+) (last row) row
|
||||
4
Task/Bell-numbers/PARI-GP/bell-numbers.parigp
Normal file
4
Task/Bell-numbers/PARI-GP/bell-numbers.parigp
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
genit(maxx=50)={bell=List();
|
||||
for(n=0,maxx,q=sum(k=0,n,stirling(n,k,2));
|
||||
listput(bell,q));bell}
|
||||
END
|
||||
41
Task/Bell-numbers/Refal/bell-numbers.refal
Normal file
41
Task/Bell-numbers/Refal/bell-numbers.refal
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
$ENTRY Go {
|
||||
, <BellNumbers 50>: e.Bell (e.B50)
|
||||
, <First 15 e.Bell>: (e.F15) e.Rest
|
||||
= <Each (Show) e.F15>
|
||||
<Show e.B50>
|
||||
<Each (Prout) <BellTriangle 10>>;
|
||||
}
|
||||
|
||||
Show {
|
||||
(e.X) = <Prout <Symb e.X>>;
|
||||
};
|
||||
|
||||
BellNumbers {
|
||||
s.N, <BellTriangle s.N>: e.Rows = <Each (Head) e.Rows>;
|
||||
};
|
||||
|
||||
BellTriangle {
|
||||
s.N = <BellTriangle <Sub s.N 1> ((1))>;
|
||||
0 e.T = e.T;
|
||||
s.N e.Rs (e.R) = <BellTriangle <Sub s.N 1> e.Rs (e.R) (<BellStep e.R>)>;
|
||||
};
|
||||
|
||||
BellStep {
|
||||
e.Row, e.Row: e.X (e.Last) = <Rsum (e.Last) e.Row>;
|
||||
};
|
||||
|
||||
Rsum {
|
||||
(Acc e.Acc) = ;
|
||||
(Acc e.Acc) (e.N) e.Ns, <Add (e.N) e.Acc>: e.N2 =
|
||||
(e.N2) <Rsum (Acc e.N2) e.Ns>;
|
||||
e.Ns = <Rsum (Acc 0) e.Ns>;
|
||||
};
|
||||
|
||||
Each {
|
||||
(e.F) = ;
|
||||
(e.F) (e.X) e.Xs = (<Mu e.F e.X>) <Each (e.F) e.Xs>;
|
||||
};
|
||||
|
||||
Head {
|
||||
t.X e.Y = t.X;
|
||||
};
|
||||
31
Task/Bell-numbers/SETL/bell-numbers.setl
Normal file
31
Task/Bell-numbers/SETL/bell-numbers.setl
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
program bell_numbers;
|
||||
print("First 15 and 50th Bell numbers:");
|
||||
b := bell_nums(50);
|
||||
loop for i in [1..15] with 50 do
|
||||
print(lpad(str i, 2) + ": " + str b(i));
|
||||
end loop;
|
||||
|
||||
print;
|
||||
print("First 10 rows of the Bell triangle:");
|
||||
loop for row in bell_triangle(10) do
|
||||
print(+/[lpad(str n, 7) : n in row]);
|
||||
end loop;
|
||||
|
||||
proc bell_nums(n);
|
||||
tri := bell_triangle(n);
|
||||
return [row(#row) : row in tri];
|
||||
end proc;
|
||||
|
||||
proc bell_triangle(rows);
|
||||
tri := [[1]];
|
||||
loop for i in [2..rows] do
|
||||
row := tri(#tri);
|
||||
nextrow := [row(#row)];
|
||||
loop for n in row do
|
||||
nextrow with:= nextrow(#nextrow) + n;
|
||||
end loop;
|
||||
tri with:= nextrow;
|
||||
end loop;
|
||||
return tri;
|
||||
end proc;
|
||||
end program;
|
||||
Loading…
Add table
Add a link
Reference in a new issue