(* The corners of an n-gon... *) poly[n_] := Table[{Cos[t], Sin[t]}, {t, 0, 1.999 Pi, 2 Pi/n}] (* A test to see if two indexed corners can be opposites in an n-gon, in other words a test that they're not adjacent... *) test[{i_, j_}, n_] := 1 < Mod[Abs[i - j], n] < n - 1; (* All the possible pairs of opposite corners for an n-gon. *) opposites[n_]:= Select[Union[ Sort /@ Flatten[Outer[List, Range[n], Range[n]], 1]], test[#, n]&]; (* A silly trick to get patterns of the form {___,a,___,b,___} -> {a, b}. *) myrule[n_] := With[{patts = Table[Unique["e"], {n}]}, Rule[Prepend[ Flatten[Map[{Pattern[#, Blank[]], BlankNullSequence[]}&, patts]], BlankNullSequence[]], patts]]; (* For example... myrule[4] {___,e1_,___,e2_,___,e3_,___,e4_,___} -> {e1,e2,e3,e4} *) (* A test to see if two diagonals of a polygon intersect... *) test2[{___,{x_,y_},___,{a_,b_},___} /; (x<a<y<b || a<x<b<y)] := True; (* Put it all together... Once you understand this, you'll be as bad at programming as I am. *) showCatalan[n_]:= Module[{bg, corners, thelines, poly = N@poly[n]}, bg = Line[Append[poly, First[poly]]]; >Transfer interrupted!