RosettaCodeData/Task/Bernoulli-numbers/Bracmat/bernoulli-numbers.bracmat
2023-07-01 13:44:08 -04:00

60 lines
1.5 KiB
Text

( BernoulliList
= B Bs answer indLn indexLen indexPadding
, n numberPadding p solPos solidusPos sp
. ( B
= m A a j b
. -1:?m
& :?A
& whl
' ( 1+!m:~>!arg:?m
& ((!m+1:?j)^-1:?a)
map
$ ( (
= .(-1+!j:?j)*(!arg+-1*!a):?a
)
. !A
)
: ?A
)
& !A:? @?b
& !b
)
& -1:?n
& :?Bs
& whl
' ( 1+!n:~>!arg:?n
& B$!n !Bs:?Bs
)
& @(!arg:? [?indexLen)
& 1+!indexLen:?indexLen
& !Bs:%@(?:? "/" [?solidusPos ?) ?
& 1+!solidusPos:?solidusPos:?p
& :?sp
& whl
' (!p+-1:~<0:?p&" " !sp:?sp)
& :?answer
& whl
' ( !Bs:%?B ?Bs
& ( !B:0
| (!B:/|str$(!B "/1"):?B)
& @(!B:? "/" [?solPos ?)
& @(!arg:? [?indLn)
& !sp
: ? [(-1*!indexLen+!indLn) ?indexPadding
: ? [(-1*!solidusPos+!solPos) ?numberPadding
& "B("
!arg
")="
!indexPadding
!numberPadding
(!B:>0&" "|)
!B
\n
!answer
: ?answer
)
& -1+!arg:?arg
)
& str$!answer
)
& BernoulliList$60;