Catalan numbers: Difference between revisions
Content added Content deleted
(add lambdatalk code) |
|||
Line 2,847: | Line 2,847: | ||
2674440 2674440 2674440 |
2674440 2674440 2674440 |
||
9694845 9694845 9694845</pre> |
9694845 9694845 9694845</pre> |
||
=={{header|Lambdatalk}}== |
|||
{{trans|Javascript}} |
|||
<syntaxhighlight lang="scheme"> |
|||
{def catalan1 |
|||
{def fac {lambda {:n} {* {S.serie 1 :n}}}} |
|||
{lambda {:n} |
|||
{floor {+ {/ {fac {* 2 :n}} {fac {+ :n 1}} {fac :n}} 0.5}}}} |
|||
-> catalan1 |
|||
{def catalan2 |
|||
{def catalan2.sum |
|||
{lambda {:n :a :s :i} |
|||
{if {= :i :n} |
|||
then {A.set! :n :s :a} |
|||
else {catalan2.sum :n |
|||
:a |
|||
{+ :s {* {catalan2.loop :i :a} |
|||
{catalan2.loop {- :n :i 1} :a}}} |
|||
{+ :i 1}} }}} |
|||
{def catalan2.loop |
|||
{lambda {:n :a} |
|||
{if {= :n 0} |
|||
then 1 |
|||
else {if {W.equal? {A.get :n :a} undefined} |
|||
then {A.get :n {catalan2.sum :n :a 0 0}} |
|||
else {A.get :n :a} }}}} |
|||
{lambda {:n} |
|||
{catalan2.loop :n {A.new}} }} |
|||
-> catalan2 |
|||
{def catalan3 |
|||
{def catalan3.loop |
|||
{lambda {:n :a} |
|||
{if {= :n 0} |
|||
then 1 |
|||
else {if {W.equal? {A.get :n :a} undefined} |
|||
then {A.get :n |
|||
{A.set! :n |
|||
{/ {* {- {* 4 :n} 2} |
|||
{catalan3.loop {- :n 1} :a}} |
|||
{+ :n 1}} |
|||
:a}} |
|||
else {A.get :n :a} |
|||
}}}} |
|||
{lambda {:n} |
|||
{catalan3.loop :n {A.new}}}} |
|||
-> catalan3 |
|||
1 {S.map catalan1 {S.serie 1 15}} |
|||
-> |
|||
1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 |
|||
{S.map catalan2 {S.serie 0 15}} |
|||
-> |
|||
1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 |
|||
{S.map catalan3 {S.serie 0 15}} |
|||
-> |
|||
1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 |
|||
</syntaxhighlight> |
|||
=={{header|langur}}== |
=={{header|langur}}== |
||
{{trans|Perl}} |
{{trans|Perl}} |