==> competition/games/set.s <== I can get 20: 1ROL 1GDL 1GDM 1GOM 1GSL 1PDH 1PDM 1POL 1POM 2RSL 2PDM 3ROL 3ROM 3RSL 3RSH 3GDM 3GOL 3GSL 3GSM 3POM This collection of 20 is a local maximum. The small C progam shown below was used to check for all possible extensions to a collection of 21. Of course this leaves open the question whether there exists a completely different collection of 21 from which no "set" can be selected. -- Gene Miller ------- C Program enclosed ------- #define N 21 static int data[N][4]= { 1, 1, 2, 1, /* 00 */ 1, 2, 1, 1, /* 01 */ 1, 2, 1, 2, /* 02 */ 1, 2, 2, 2, /* 03 */ 1, 2, 3, 1, /* 04 */ 1, 3, 1, 3, /* 05 */ 1, 3, 1, 2, /* 06 */ 1, 3, 2, 1, /* 07 */ 1, 3, 2, 2, /* 08 */ 2, 1, 3, 1, /* 09 */ 2, 3, 1, 2, /* 10 */ 3, 1, 2, 1, /* 11 */ 3, 1, 2, 2, /* 12 */ 3, 1, 3, 1, /* 13 */ 3, 1, 3, 3, /* 14 */ 3, 2, 1, 2, /* 15 */ 3, 2, 2, 1, /* 16 */ 3, 2, 3, 1, /* 17 */ 3, 2, 3, 2, /* 18 */ 3, 3, 2, 2, /* 19 */ 0, 0, 0, 0 /* 20 */ /* leave space for Nth combo */ }; main() { int x, y, z, w; for (x=1; x<=3; x++) /* check all combos */ for (y=1; y<=3; y++) for (z=1; z<=3; z++) for (w=1; w<=3; w++) printf ("%d %d %d %d -> sets=%d\n", x, y, z, w, check (x, y, z, w)); } int check(x,y,z,w) int x, y, z, w; { int i,j,k,m; int errors, sets; for (i=0; i