my way~
//online parser:
https://www.bccn.net/run/
程序代码:
#include <stdio.h>
#define CHECK_SUM 10
void check_sum(char *log, int *d, int len)
{
int i;
puts(log);
for (i = 0; i < len; i++) {
if (CHECK_SUM == d[i]) printf("set %d hit!\n", i);
//else puts("pass");
}
}
int main(int argc, char *argv[])
{
int sum, i, j;
#define C71 7
int d1[C71] = {1, 3, 5, 2, 4, 6, 10};
/***************** pre-generated by another program named: array_seperated.c ******************/
#define C72 (7 * 6) >> 1
int d2[C72] = {
#define src d1
/* 0 */src[0] + src[1], src[0] + src[2], src[0] + src[3],
/* 3 */src[0] + src[4], src[0] + src[5], src[0] + src[6],
/* 6 */src[1] + src[2], src[1] + src[3], src[1] + src[4],
/* 9 */src[1] + src[5], src[1] + src[6], src[2] + src[3],
/* 12 */src[2] + src[4], src[2] + src[5], src[2] + src[6],
/* 15 */src[3] + src[4], src[3] + src[5], src[3] + src[6],
/* 18 */src[4] + src[5], src[4] + src[6], src[5] + src[6]
};
#define C73 (7 * 6 * 5) / (3 * 2)
int d3[C73] = {
/* 0 */d2[0] + src[2], d2[0] + src[3], d2[0] + src[4],
/* 3 */d2[0] + src[5], d2[0] + src[6], d2[1] + src[3],
/* 6 */d2[1] + src[4], d2[1] + src[5], d2[1] + src[6],
/* 9 */d2[2] + src[4], d2[2] + src[5], d2[2] + src[6],
/* 12 */d2[3] + src[5], d2[3] + src[6], d2[4] + src[6],
/* 15 */d2[6] + src[3], d2[6] + src[4], d2[6] + src[5],
/* 18 */d2[6] + src[6], d2[7] + src[4], d2[7] + src[5],
/* 21 */d2[7] + src[6], d2[8] + src[5], d2[8] + src[6],
/* 24 */d2[9] + src[6], d2[11] + src[4], d2[11] + src[5],
/* 27 */d2[11] + src[6], d2[12] + src[5], d2[12] + src[6],
/* 30 */d2[13] + src[6], d2[15] + src[5], d2[15] + src[6],
/* 33 */d2[16] + src[6], d2[18] + src[6]
};
#define C74 (7 * 6 * 5 * 4) / (4 * 3 * 2)
int d4[C74] = {
/* 0 */d3[0] + src[3], d3[0] + src[4], d3[0] + src[5],
/* 3 */d3[0] + src[6], d3[1] + src[4], d3[1] + src[5],
/* 6 */d3[1] + src[6], d3[2] + src[5], d3[2] + src[6],
/* 9 */d3[3] + src[6], d3[5] + src[4], d3[5] + src[5],
/* 12 */d3[5] + src[6], d3[6] + src[5], d3[6] + src[6],
/* 15 */d3[7] + src[6], d3[9] + src[5], d3[9] + src[6],
/* 18 */d3[10] + src[6], d3[12] + src[6], d3[15] + src[4],
/* 21 */d3[15] + src[5], d3[15] + src[6], d3[16] + src[5],
/* 24 */d3[16] + src[6], d3[17] + src[6], d3[19] + src[5],
/* 27 */d3[19] + src[6], d3[20] + src[6], d3[22] + src[6],
/* 30 */d3[25] + src[5], d3[25] + src[6], d3[26] + src[6],
/* 33 */d3[28] + src[6], d3[31] + src[6]
};
/***************** pre-generated by another program named: array_seperated.c ******************/
check_sum("check d1...", d1, C71);
check_sum("check d2...", d2, C72);
check_sum("check d3...", d3, C73);
check_sum("check d4...", d4, C74);
return 0;
}
output sample:
check d1...
set 6 hit!
check d2...
set 18 hit!
check d3...
set 3 hit!
set 6 hit!
set 15 hit!
check d4...
set 4 hit!
-----------auto generate sequence array-----------
程序代码:
#include <stdio.h>
#include <string.h>
typedef struct array_desc{
char _head[256];
char _body[1024];
char _tail[8];
}svad, *spad;
int main(int argc, char *argv[])
{
#define C71 7
int d1[C71] = {1, 3, 5, 2, 4, 6, 10};
char *_d2[3] = {
/* C72 */"010203040506121314151623242526343536454656",
/* C73 */"02030405061314151624252635364663646566747576858696116125126136155156166186",
};
char *_head[3] = {
"#define C72 (7 * 6) >> 1\nint d2[C72] = {",
"#define C73 (7 * 6 * 5) / (3 * 2)\nint d3[C73] = {"
};
char *_body = "/* i */d1[x] + d1[x], d1[x] + d1[x], d1[x] + d1[x],\n";
char *_tail = "};";
int i, j, idx;
static svad vad;
strcpy((&vad)->_head, _head[0]);
/* C72 */
for (i = 0; i < 7; i++)
strcpy((&vad)->_body + strlen((&vad)->_body), _body);
strcpy((&vad)->_tail, _tail);
#if 1
for (i = j = idx = 0; i < strlen((&vad)->_body); i++) {
#define tag_I 'i'
#define tag_X 'x'
#define tag_Y 'y'
#define tag_Z 'z'
#define dig_lize(_n, op) ((_n) op 10) + 0x30
if (tag_I == (&vad)->_body[i]) {
(&vad)->_body[i - 1] = dig_lize(3 * idx, /);
(&vad)->_body[i] = dig_lize(3 * idx++, %);
} else if (tag_X == (&vad)->_body[i]) {
(&vad)->_body[i] = _d2[0][j++];
} else if (tag_Y == (&vad)->_body[i]) {
(&vad)->_body[i] = _d2[0][j++];
(&vad)->_body[++i] = _d2[0][j++];
}
}
#endif
puts((&vad)->_head);
printf("%s", (&vad)->_body);
puts((&vad)->_tail);
return 0;
}
output sample:
#define C72 (7 * 6) >> 1
int d2[C72] = {
/* 00 */d1[0] + d1[1], d1[0] + d1[2], d1[0] + d1[3],
/* 03 */d1[0] + d1[4], d1[0] + d1[5], d1[0] + d1[6],
/* 06 */d1[1] + d1[2], d1[1] + d1[3], d1[1] + d1[4],
/* 09 */d1[1] + d1[5], d1[1] + d1[6], d1[2] + d1[3],
/* 12 */d1[2] + d1[4], d1[2] + d1[5], d1[2] + d1[6],
/* 15 */d1[3] + d1[4], d1[3] + d1[5], d1[3] + d1[6],
/* 18 */d1[4] + d1[5], d1[4] + d1[6], d1[5] + d1[6],
};
[此贴子已经被作者于2021-10-20 21:47编辑过]