📄 lang.cfc
字号:
#define PRINT_CASES 1void PrintCases(void) { int case_num; int index; for (case_num = 0; case_num < MAX_NUM_FIT_CASES; case_num++) { for (index = 0; index < fitness_cases[case_num].length; index++) { printf("%d", fitness_cases[case_num].string[index]); } printf("\t\t %d\n", fitness_cases[case_num].valid); }}/* Ends in 101 *//*int IsValid(int string[], int length) { if (length < 3) return FALSE; if ((string[length-3] == 1) && (string[length-2] == 0) && (string[length-1] == 1)) return TRUE; return FALSE;}*//* 4 0s then 4 1s */int IsValid(int string[], int length) { int i; int num_zeros = 0; int num_ones = 0; int got_3_zeros = 0; for (i = 0; i < length; i++) { if (string[i] == 0) { num_ones = 0; num_zeros++; if (num_zeros == 4) got_3_zeros = TRUE;; } else { num_zeros = 0; num_ones++; if ((num_ones == 4) && got_3_zeros) return TRUE; } } return FALSE;}/* (10)* *//*int IsValid(int string[], int length) { int match = 1; int i; if ((length % 2) != 0) return FALSE; for (i = 0; i < length; i++) { if (string[i] != match) return FALSE; match = (match + 1) % 2; } return TRUE;}*//* pairwise, an even sum of 01s and 10s *//*int IsValid(int string[], int length) { int last = 2; int i; int num = 0; for (i = 0; i < length; i++) { if (string[i] == 0) { if (last == 1) num++; last = 0; } else { if (last == 0) num++; last = 1; } } if ((num % 2) == 0) return TRUE; return FALSE;}*/void Alternate(int case_num, int length) { int index; int next = 1; for (index = 0; index < length; index++) { fitness_cases[case_num].string[index] = next; next = (next + 1) %2; }}/* even 0s and 1s *//*int IsValid(int string[], int length) { int i; int num_ones = 0; int num_zeros = 0; for (i = 0; i < length; i++) { if (string[i] == 0) num_zeros++; else num_ones++; } if ((num_zeros % 2) != 0) return FALSE; if ((num_ones % 2) != 0) return FALSE; return TRUE;}*//* #1s - #0s = 3n *//*int IsValid(int string[], int length) { int i; int diff; int num_ones = 0; int num_zeros = 0; for (i = 0; i < length; i++) { if (string[i] == 0) num_zeros++; else num_ones++; } diff = num_ones - num_zeros; if (diff < 0) diff = -diff; if ((diff % 3) == 0) return TRUE; else return FALSE;}*//* TL3 - no odd 0s after odd 1s *//*int IsValid(int string[], int length) { int i; int last = 0; int cur0 = 0; int cur1 = 0; for (i = 0; i < length; i++) { if (string[i] == 1) { if (last == 0) { if ((cur1 == 1) && (cur0 == 1)) return FALSE; cur1 = 1; } else cur1 = (cur1 + 1) % 2; last = 1; } else { if (last == 1) cur0 = 1; else cur0 = (cur0 + 1) %2; last = 0; } } if ((last == 0) && (cur1 == 1) && (cur0 == 1)) return FALSE; return TRUE;}*//* TL7- 0*1*0*1* *//*int IsValid(int string[], int length) { int i; int state = 0; for (i = 0; i < length; i++) { if ((state == 0) && (string[i] == 1)) state = 1; else if ((state == 1) && (string[i] == 0)) state = 2; else if ((state == 2) && (string[i] == 1)) state = 3; else if ((state == 3) && (string[i] == 0)) return FALSE; } return TRUE;}*/int Equal(int string1[], int string2[], int length) { int i; for (i = 0; i < length; i++) { if (string1[i] != string2[i]) return FALSE; } return TRUE;}int Unique(int case_num) { int i; for (i = 0; i < case_num; i++) { if (fitness_cases[i].length == fitness_cases[case_num].length) { if (Equal( fitness_cases[i].string, fitness_cases[case_num].string, fitness_cases[case_num].length)) { return FALSE; } } } return TRUE;}void CreateFitnessCases (Population *pop)/*;*/ /*funcdef*/{ int case_num; int length; int index; int num_valid = 0; int num_invalid = 0; long int temp = GetSeed(pop); int alternate = 0; /* SetSeed(pop, (long)43); */ SetSeed(pop, (long)60); case_num = 0; while (case_num < MAX_NUM_FIT_CASES) { length = RandomInt(MAX_STRING_LENGTH) + 1; fitness_cases[case_num].length = length; /*alternate = (num_invalid == (MAX_NUM_FIT_CASES / 2));*/ if (!alternate) { for (index = 0; index < length; index++) { fitness_cases[case_num].string[index] = RandomInt(2); } } else { Alternate(case_num, length); } fitness_cases[case_num].valid = IsValid(fitness_cases[case_num].string, fitness_cases[case_num].length); if (fitness_cases[case_num].valid) { if (num_valid < (MAX_NUM_FIT_CASES/2)) { if (Unique(case_num)) { num_valid++; case_num++; } } } else { if (num_invalid < (MAX_NUM_FIT_CASES/2)) { if (Unique(case_num)) { num_invalid++; case_num++; } } } } /*PrintCases();*/ SetSeed(pop, (long)temp);} /* fitness_cases[0].length = 4; fitness_cases[0].string[0] = INPUT_B; fitness_cases[0].string[1] = INPUT_B; fitness_cases[0].string[2] = INPUT_A; fitness_cases[0].string[3] = INPUT_B; fitness_cases[0].string[4] = INPUT_X; fitness_cases[0].string[5] = INPUT_X; fitness_cases[0].string[6] = INPUT_X; fitness_cases[0].string[7] = INPUT_X; fitness_cases[0].valid = TRUE; fitness_cases[1].length = 8; fitness_cases[1].string[0] = INPUT_B; fitness_cases[1].string[1] = INPUT_A; fitness_cases[1].string[2] = INPUT_B; fitness_cases[1].string[3] = INPUT_A; fitness_cases[1].string[4] = INPUT_B; fitness_cases[1].string[5] = INPUT_B; fitness_cases[1].string[6] = INPUT_A; fitness_cases[1].string[7] = INPUT_B; fitness_cases[1].valid = TRUE; fitness_cases[2].length = 8; fitness_cases[2].string[0] = INPUT_B; fitness_cases[2].string[1] = INPUT_B; fitness_cases[2].string[2] = INPUT_A; fitness_cases[2].string[3] = INPUT_B; fitness_cases[2].string[4] = INPUT_B; fitness_cases[2].string[5] = INPUT_B; fitness_cases[2].string[6] = INPUT_A; fitness_cases[2].string[7] = INPUT_B; fitness_cases[2].valid = TRUE; fitness_cases[3].length = 7; fitness_cases[3].string[0] = INPUT_B; fitness_cases[3].string[1] = INPUT_B; fitness_cases[3].string[2] = INPUT_A; fitness_cases[3].string[3] = INPUT_B; fitness_cases[3].string[4] = INPUT_B; fitness_cases[3].string[5] = INPUT_A; fitness_cases[3].string[6] = INPUT_B; fitness_cases[3].string[7] = INPUT_X; fitness_cases[3].valid = TRUE; fitness_cases[4].length = 8; fitness_cases[4].string[0] = INPUT_A; fitness_cases[4].string[1] = INPUT_A; fitness_cases[4].string[2] = INPUT_A; fitness_cases[4].string[3] = INPUT_A; fitness_cases[4].string[4] = INPUT_B; fitness_cases[4].string[5] = INPUT_B; fitness_cases[4].string[6] = INPUT_A; fitness_cases[4].string[7] = INPUT_B; fitness_cases[4].valid = TRUE; fitness_cases[5].length = 8; fitness_cases[5].string[0] = INPUT_A; fitness_cases[5].string[1] = INPUT_B; fitness_cases[5].string[2] = INPUT_A; fitness_cases[5].string[3] = INPUT_A; fitness_cases[5].string[4] = INPUT_B; fitness_cases[5].string[5] = INPUT_B; fitness_cases[5].string[6] = INPUT_A; fitness_cases[5].string[7] = INPUT_A; fitness_cases[5].valid = FALSE; fitness_cases[6].length = 3; fitness_cases[6].string[0] = INPUT_B; fitness_cases[6].string[1] = INPUT_A; fitness_cases[6].string[2] = INPUT_B; fitness_cases[6].string[3] = INPUT_X; fitness_cases[6].string[4] = INPUT_X; fitness_cases[6].string[5] = INPUT_X; fitness_cases[6].string[6] = INPUT_X; fitness_cases[6].string[7] = INPUT_X; fitness_cases[6].valid = FALSE; fitness_cases[7].length = 5; fitness_cases[7].string[0] = INPUT_B; fitness_cases[7].string[1] = INPUT_B; fitness_cases[7].string[2] = INPUT_A; fitness_cases[7].string[3] = INPUT_B; fitness_cases[7].string[4] = INPUT_B; fitness_cases[7].string[5] = INPUT_X; fitness_cases[7].string[6] = INPUT_X; fitness_cases[7].string[7] = INPUT_X; fitness_cases[7].valid = FALSE; fitness_cases[8].length = 8; fitness_cases[8].string[0] = INPUT_B; fitness_cases[8].string[1] = INPUT_B; fitness_cases[8].string[2] = INPUT_A; fitness_cases[8].string[3] = INPUT_A; fitness_cases[8].string[4] = INPUT_B; fitness_cases[8].string[5] = INPUT_B; fitness_cases[8].string[6] = INPUT_A; fitness_cases[8].string[7] = INPUT_A; fitness_cases[8].valid = FALSE; fitness_cases[9].length = 4; fitness_cases[9].string[0] = INPUT_A; fitness_cases[9].string[1] = INPUT_A; fitness_cases[9].string[2] = INPUT_A; fitness_cases[9].string[3] = INPUT_A; fitness_cases[9].string[4] = INPUT_X; fitness_cases[9].string[5] = INPUT_X; fitness_cases[9].string[6] = INPUT_X; fitness_cases[9].string[7] = INPUT_X; fitness_cases[9].valid = FALSE; */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -