以下文本是用Haskell文字样式编写的:其中“>”是第一个字符是程序;其他几行是注释。A201376、A054225、A201377、A054242的Haskell程序=======================================================目录1对类型2 OEIS条目的功能2.1 A201376型2.2 A201377型2.3 A0542252.4 A054242型3抽象函数3.1分区计数3.1.1分为可能重复的部分3.1.2分成不同的部分3.2删除分区3.2.1分为可能重复的部分3.2.2分成不同的部分--------------------------------------------------------------------------------1对-------------------------------------------------------------------------------->newtype Pair=对(Int,Int)派生(Eq)>实例编号对,其中>对(u,v)+对(x,y)=对(u+x,v+y)>对(u,v)-对(x,y)=对(u-x,v-y)>fromInteger 0=对(0,0)申报不完整;足以划分对。>实例Ord Pair,其中>对(u,v)>0=最小u v>=0&最大u v>0申报不完整;足以指定“正对”。>实例Show Pair其中>show(配对(u,v))=“(”++显示u++“,”++显示v++“)”>posLtEqu::Int->Int->[Pair]>posLtEqu u v>|u<0|v<0=[]>|否则=尾部[对(i,j)|i<-[0..u],j<-[0.v]]示例:-------------------------------------------------------------------ghci>配对(5,2)(5,2)ghci>0::对(0,0)ghci>配对(3,2)>0真的ghci>配对(-3,1)>0False(错误)ghci>(0::对)>0False(错误)ghci>posLtEqu 3 0[(1,0),(2,0),(3,0)]ghci>posLtEqu 3 2[(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2),(3,0),(3,1),(3,2)]ghci>posLtEqu 0 0[]ghci>posLtEqu 3-2[]--------------------------------------------------------------------------------2.1 A201376按行读取的三角形,0<=k<=n:T(n,k)=(n,k)分成正对的分区数。-------------------------------------------------------------------------------->a201376::Int->Int->整数>a201376 n k=p(posLtEqu n k)(对(n,k))>a201376_row::Int->[整数]>a201376_row n=地图(a201376 n)[0..n]>a201376_tabl::[[整数]]>a201376_tabl=映射a201376_row[0..]示例:-------------------------------------------------------------------ghci>a201376 2 14ghci>a201376 29ghci>a201376 10 042ghci>a201376_row 2[2,4,9]ghci>a201376_row 3[3,7,16,31]ghci>取6 a201376_tabl[[1],[1,2],[2,4,9],[3,7,16,31],[5,12,29,57,109],[7,19,47,97,189,339]]--------------------------------------------------------------------------------2.2 A201377按行读取三角形,0<=k<=n:T(n,k)=(n,k)分成不同正对的分区数。-------------------------------------------------------------------------------->a201377::Int->Int->整数>a201377 n k=p'(posLtEqu n k)(对(n,k))>a201377_row::Int->[整数]>a201377_row n=地图(a201377 n)[0..n]>a201377_tabl::[[整数]]>a201377_tabl=映射a201377_row[0..]示例:-------------------------------------------------------------------ghci>a201377 5 0ghci>2013年77月5日110ghci>a201377_第5行[3,10,21,42,74,123]ghci>取6 a201377_tabl[[1],[1,2],[1,3,5],[2,5,9,17],[2,7,14,27,46],[3,10,21,42,74,123]]--------------------------------------------------------------------------------2.3 A054225由反对偶读取的方阵,0<=k<=n:S(n,k)=(n,k)分成正对的分区数。-------------------------------------------------------------------------------->a054225::Int->Int->整数>a054225 n k=a054225_adiag(n+k)!!k>a054225_adiag::Int->[整数]>a054225_adiag n=映射(\k->a201376(n-k)k)[0.n]>a054225_平方::[[整数]]>a054225_square=映射a054225m_adiag[0..]示例:-------------------------------------------------------------------ghci>a054225 2 14ghci>a054225 2 29ghci>a054225 10 042ghci>a054225_低2[2,4,9]ghci>取6 a054225_平方[[1],[1,1],[2,2,2],[3,4,4,3],[5,7,9,7,5],[7,12,16,16,12,7]]--------------------------------------------------------------------------------2.4 A054242反对偶读取的方阵,0<=k<=n:S(n,k)=(n,k)分成不同正对的分区数。-------------------------------------------------------------------------------->a054242::Int->Int->整数>a054242 n k=a054242_正方形!!(n+k)!!k个>a054242_adiag::Int->[整数]>a054242_adiag n=地图(\k->a201377(n-k)k)[0..n]>a054242_平方::[[整数]]>a054242_square=映射a054242 _图表[0..]示例:-------------------------------------------------------------------ghci>a054242 5 0ghci>a054242 4 214ghci>a054242 3 317ghci>取7 a054242_平方[[1],[1,1],[1,2,1],[2,3,3,2],[2,5,5,5,2],[3,7,9,9,7,3],[4,10,14,17,14,10,4]]--------------------------------------------------------------------------------3.1.1将分区计数为部分的抽象函数。---------------------------------=====================-------------------------->p::(数字t,顺序t)=>[t]->t->整数表达式(p vs w)是将项目w划分为vs元素>p _ 0=1>p[]_=0>p ks’@(k:ks)m>|m>0=p ks'(m-k)+p ks m>|否则=0示例:-------------------------------------------------------------------ghci>p[1..10]1042=A000040(10)ghci>p[1,3..12]1215=A000009(12)ghci>p[2,3]204=A103221(12)ghci>p(posLtEqu 5 3)$对(5,3)97=A201376(5,3)--------------------------------------------------------------------------------3.1.2将分区计数为不同部分的抽象函数。---------------------------------==============================----------------->p'::(数字t,顺序t)=>[t]->t->整数表达式(p'vs w)是将项目w划分为vs的不同元素>p'_ 0=1>p'[]_=0>p'(k:ks)米>|m>0=p'ks(m-k)+p'ksm>|否则=0示例:-------------------------------------------------------------------ghci>p'[1..12]1215=A000009(12)ghci>p'(posLtEqu 5 3)$对(5,3)42=A201377(5,3)--------------------------------------------------------------------------------3.2.1将分区枚举为不同部分的抽象函数。-------------------------------------==============================-------------表达式(ps vs w)是将项目w划分为vs元素>ps::(数字t,顺序t)=>[t]->t->[t]->[t]]>ps _ 0部分=[部分]>ps[]_=[]>ps-ks'@(k:ks)m部分>|m>0=ps ks'(m-k)(k:部分)++ps ks m部分>|否则=[]示例:-------------------------------------------------------------------ghci>ps[1..5]5[][[1,1,1,1,1],[2,1,1,1],[3,1,1],[2,2,1],[4,1],[3,2],[5]]ghci>ps(posLtEqu 2 1)(对(2,1))[][[(1,0),(1,0),(0,1)],[(2,0),(0,1)],[(1,1),(1,0)],[(2,1)]]--------------------------------------------------------------------------------3.2.2将分区枚举为不同部分的抽象函数。-------------------------------------==============================------------->ps'::(数字t,顺序t)=>[t]->t->[t]->[t]]表达式(ps vs w)是将项目w划分为vs的不同元素>ps'_ 0 partts=[部分]>ps’[]_=[]>ps'(k:ks)m部分>|m>0=ps'ks(m-k)(k:部分)++ps'ksm部分>|否则=[]示例:-------------------------------------------------------------------ghci>ps’[1..10]10[][[4,3,2,1],[7,2,1],[6,3,1],[5,4,1],[9,1],[5,3,2],[8,2],[7,3],[6,4],[10]]ghci>ps'(posLtEqu 2 1)(对(2,1))[][[(2,0),(0,1)],[(1,1),(1,0)],[(2,1)]]ghci>ps'(posLtEqu2)(对(2,2))[][[(1,1),(1,0),(0,1)],[(2,1),(0,1)],[(2,0),(0,2)],[(1,2),(1,0)],[(2,2)]]-- -----------------------------------------------------------------------------a054225.lhs:reinhard.zumkeller@gmail.com版本2:2011年12月2日添加了2.3和2.4,适用于A054225、A054242的程序版本1.1:2011年11月30日,尼尔·A·斯隆,新的A-numbers,参考历史(A054225)版本1:2011年11月30日