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}}