/* Catalan numbers in Picat. http://en.wikipedia.org/wiki/Catalan_number """ C[0] = 1 C[n+1]= sum(i in 0 .. n) (C[i]*C[n-i]) """ Also, see OEIS: http://oeis.org/A000108 This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ % import util. % import cp. main => go. go => foreach(N in 0..30) println([N,catalan(N)]) end, nl. catalan(N) = catalan1(N+1). table catalan1(0) = 1. catalan1(1) = 1. catalan1(N) = sum([ catalan1(I)*catalan1(N-I) : I in 1..N-1]) => N > 1.