#define N 9 #define SZ 50 #define EPSILON 1e-3 #define BENIGN 1 #define MALIGNANT -1 #define LINEAR 0 #define QUADRATIC 1 // for i/o continuous Qp[N][N],Qm[N][N]; continuous Lp[N],Lm[N],Cp,Cm; continuous Under[SZ],Over[SZ]; int be[SZ][N], ma[SZ][N]; data() { be = { 4,0,0,0,1,0,2,0,0, 3,0,0,2,1,0,2,0,0, 0,0,0,0,0,0,2,0,0, 3,0,0,0,1,0,2,0,0, 4,0,0,0,1,0,1,0,0, 1,0,0,0,1,0,2,0,0, 5,5,5,8,5,0,6,7,0, 0,0,0,0,1,1,1,0,0, 0,2,2,1,1,0,6,1,0, 2,0,0,0,1,2,2,0,0, 2,0,0,0,1,1,6,0,0, 2,0,0,1,1,0,0,0,0, 1,0,0,1,1,0,0,0,0, 0,2,0,1,1,1,4,2,1, 2,1,0,0,1,1,2,0,0, 2,0,0,0,1,0,2,0,0, 2,0,0,0,1,0,0,0,0, 4,3,3,4,6,8,2,1,0, 1,0,1,0,1,0,2,0,0, 1,0,0,0,1,0,1,0,0, 2,0,0,0,1,0,1,0,0, 1,0,0,0,1,0,1,0,0, 2,0,1,0,1,0,1,0,0, 0,0,0,0,1,0,1,0,1, 3,0,0,0,1,0,2,0,0, 0,0,1,0,1,1,3,1,0, 1,1,1,0,0,0,6,0,0, 3,0,0,0,1,0,2,0,0, 0,0,0,0,1,0,1,0,0, 4,0,0,0,1,0,2,0,0, 0,0,0,0,1,4,0,0,0, 0,0,1,1,1,0,2,0,0, 4,0,2,0,1,0,1,0,0, 2,0,0,0,1,0,0,0,0, 5,7,7,0,2,3,2,6,0, 1,0,0,0,1,0,0,0,4, 3,0,0,0,1,0,1,0,0, 0,0,0,0,1,0,2,0,0, 2,0,0,0,0,0,1,0,0, 1,0,0,0,1,0,1,0,0, 3,0,0,2,1,0,2,0,0, 0,0,0,0,1,0,2,1,0, 4,2,0,1,1,0,1,0,0, 3,0,0,1,1,0,1,0,0, 0,0,0,0,1,0,2,0,0, 1,0,0,0,1,0,2,0,0, 0,0,0,0,1,0,1,2,0, 7,2,2,0,1,1,2,1,0, 0,0,0,0,1,0,1,0,0, 2,0,0,0,2,0,1,0,0 }; ma = { 7,9,9,7,6,9,8,6,7, 9,6,6,5,3,9,3,0,1, 9,6,6,2,7,4,6,3,2, 9,3,2,0,2,2,5,4,1, 6,7,6,1,3,7,2,7,1, 4,4,4,7,9,7,6,2,6, 4,1,2,0,5,9,4,0,0, 5,2,3,0,4,1,2,8,0, 8,3,4,9,5,9,3,7,0, 2,2,5,3,4,7,3,3,0, 1,2,3,3,1,4,1,4,0, 9,9,9,7,1,9,3,0,0, 9,9,9,2,9,7,7,0,0, 4,3,5,6,8,6,7,9,0, 2,3,4,1,5,7,3,0,0, 4,4,4,5,2,9,2,0,0, 4,9,9,2,7,0,4,9,2, 4,2,2,2,1,2,3,3,0, 9,4,4,2,5,6,6,9,0, 9,9,9,7,5,0,7,8,0, 4,5,4,5,9,0,2,0,0, 8,4,7,0,1,2,1,0,4, 9,5,5,2,3,4,2,5,0, 8,4,4,1,1,1,4,0,0, 4,2,3,0,7,9,3,8,0, 9,5,3,0,2,3,2,1,2, 8,5,8,1,9,5,1,8,9, 7,1,2,0,5,2,6,0,0, 5,4,3,3,2,8,6,7,2, 3,4,4,9,3,9,6,4,7, 7,2,4,3,4,9,0,5,1, 7,7,6,3,9,9,6,7,6, 9,6,6,3,4,9,4,6,1, 7,6,5,3,3,9,4,0,0, 6,3,5,3,5,0,3,2,0, 7,3,4,0,1,0,6,2,0, 1,4,2,2,5,6,6,4,0, 9,9,9,3,7,0,7,9,0, 9,2,5,1,2,4,3,9,1, 7,9,9,0,2,5,2,8,0, 8,9,9,0,9,7,2,2,0, 7,2,7,2,3,8,7,8,7, 4,9,5,0,9,3,3,9,9, 6,4,5,9,4,9,6,8,3, 6,2,3,3,2,2,2,1,6, 7,5,3,2,4,8,2,0,0, 4,2,4,0,7,9,4,2,0, 4,9,7,9,7,9,2,5,2, 9,9,7,5,3,4,7,9,0, 5,9,9,9,7,9,9,9,6 }; } 2lp_main() { data(); setup(); c_either linear(); // Try for a linear discriminator or quadratic(); // Else do the best you can } setup() { and(int i=0;i= EPSILON - Dev; } linear() { int cnt; // Storeback variable and(int i=0;i EPSILON; then { printf("benign %d is an outlier\n",i); cnt = cnt + 1; } if wp(Over[i]) > EPSILON; then { printf("malignant %d is an outlier\n",i); cnt = cnt + 1; } } printf("In all %d outliers found\n",cnt); }