fill (int count, char with) { fprintf (stderr, " o Length %d char %d (%02x)\n", count, with & 0xff, with & 0xff); fflush (stderr); fill2 (8257, 'z', 0); // first part fill2 (count - 8257, with, 1); // do it for real }
static void fill2(int i, int j, char b[19][19], int size) { if (b[i][j] >= 3) return; b[i][j] = 3; if (i+1<size && b[i+1][j]==EMPTY) fill2(i+1,j,b, size); if (j+1<size && b[i][j+1]==EMPTY) fill2(i,j+1,b, size); if (i-1>=0 && b[i-1][j]==EMPTY) fill2(i-1,j,b, size); if (j-1>=0 && b[i][j-1]==EMPTY) fill2(i,j-1,b, size); }
/* ** Convert a string into its printable form. "width" is the output ** width. "prec" is the maximum number of characters of "s" to output, ** where -1 means until NUL. */ static int cvt_s(SprintfState *ss, const char *str, int width, int prec, int flags) { int slen; if (prec == 0) return 0; /* Limit string length by precision value */ if (!str) { str = "(null)"; } if (prec > 0) { /* this is: slen = strnlen(str, prec); */ register const char *s; for(s = str; prec && *s; s++, prec-- ) ; slen = s - str; } else { slen = strlen(str); } /* and away we go */ return fill2(ss, str, slen, width, flags); }
TEST(ustl_forward_list, constructors) { // default: ustl::forward_list<int> l1; l1.insert_after(l1.before_begin(), 3); ASSERT_EQ(3, l1.front()); // fill: ustl::forward_list<int> fill1(ustl::forward_list<int>::size_type(10)); auto it1 = fill1.begin(); for (size_t i = 0; i < 10; i++) ASSERT_EQ(*it1++, 0); ustl::forward_list<int> fill2(ustl::forward_list<int>::size_type(10), static_cast<int>(-1)); auto it2 = fill2.begin(); for (size_t i = 0; i < 10; i++) ASSERT_EQ(*it2++, -1); // range: ustl::vector<int> v1{1, 2, 3}; ustl::forward_list<int> range1(v1.begin(), v1.end()); const ustl::forward_list<int> range1a{1, 2, 3}; ASSERT_TRUE(range1 == range1a); // copy: ustl::forward_list<int> copy1(range1); ASSERT_TRUE(copy1 == range1a); // initializer list: ustl::forward_list<int> l2{1, 2, 3, 4, 5}; const ustl::forward_list<int> l3{1, 2, 3, 4, 5}; ASSERT_TRUE(l2 == l3); }
void test_realloc_multiple_bases2() { void *p1 = malloc(4); if (!p1) return; fill(p1, 4); char *p2 = nondet ? realloc(p1, 6) : malloc(2); if (!p2) return; fill2(p2, 2); char *p3 = realloc(p2, 10); if (!p3) return; char *p4 = realloc(p3, 5); if (!p4) return; fill(p4, 5); char *p5 = malloc(6); if (!p5) return; fill2(p5, 3); char *p6 = realloc(nondet ? p4 : p5, 4); if (!p6) return; fill(p6, 4); }
/* ** Convert a string into its printable form. "width" is the output ** width. "prec" is the maximum number of characters of "s" to output, ** where -1 means until NUL. */ static int cvt_s(SprintfState *ss, const char *s, int width, int prec, int flags) { int slen; if (prec == 0) return 0; /* Limit string length by precision value */ slen = s ? strlen(s) : 6; if (prec > 0) { if (prec < slen) { slen = prec; } } /* and away we go */ return fill2(ss, s ? s : "(null)", slen, width, flags); }
//--------------------------------------------------------------------------- void __fastcall TAlmas3ProbSetKey::fill(TProbKey nKey) { //#define Adg1Base 1 //количество первых соседей //#define Adg1State 3 //количество вторых соседей //#define Adg2Num 3 //количество состояний вторых соседей //#define Adg2State 5 //состояние вторых соседей означающее отсутсвие второго соседа //#define NoAdg2Val (Adg2State-1) //емкость состояний для первых j соседей //#define Adg3State(j) (IntPow(IntPow(Adg2State,Adg2Num), j)) //база //#define Adg2Base(i, j) (Adg1State*Adg3State(j)*IntPow(Adg2State,i)) //#define divGetAdg1(Key) (Key%Adg1State) //#define divSetAdg1(Key, Data) (Key + ((Data%Adg1State) - divGetAdg1(Key))*Adg1Base) //#define divGetAdg2(Key, i, j) ((Key/Adg2Base(i,j))%Adg2State) //#define divSetAdg2(Key, Data, i, j) (Key + ((Data%Adg2State) - divGetAdg2(Key,i,j))*Adg2Base(i,j)) Adg1 = divGetAdg1(nKey); Adg2_i0_j0 = divGetAdg2(nKey, 0, 0); //Adg2_i1_j0 = Adg2Base(1,0); Adg2_i1_j0 = divGetAdg2(nKey, 1, 0); //Adg2_i2_j0 = Adg2Base(2,0); Adg2_i2_j0 = divGetAdg2(nKey, 2, 0); Adg2_i0_j1 = divGetAdg2(nKey, 0, 1); Adg2_i1_j1 = divGetAdg2(nKey, 1, 1); Adg2_i2_j1 = divGetAdg2(nKey, 2, 1); Adg2_i0_j2 = divGetAdg2(nKey, 0, 2); Adg2_i1_j2 = divGetAdg2(nKey, 1, 2); Adg2_i2_j2 = divGetAdg2(nKey, 2, 2); fill2(nKey); int nType; int nNumber=-2; TAlmas3ProbSetGlobal::GetProbNameFromKey2(nKey, nType, nNumber, strName); }
/* ** Convert a string into its printable form. |aWidth| is the output ** width. |aPrec| is the maximum number of characters of |aStr| to output, ** where -1 means until NUL. */ int nsTextFormatter::cvt_S(SprintfStateStr* aState, const char16_t* aStr, int aWidth, int aPrec, int aFlags) { int slen; if (aPrec == 0) { return 0; } /* Limit string length by precision value */ slen = aStr ? NS_strlen(aStr) : 6; if (aPrec > 0) { if (aPrec < slen) { slen = aPrec; } } /* and away we go */ return fill2(aState, aStr ? aStr : u"(null)", slen, aWidth, aFlags); }
// Here's the wrapper for fill2; it's a little more complicated because we need // to check the flags and create the array of pointers. void wrap_fill2(np::ndarray const & array) { if (array.get_dtype() != np::dtype::get_builtin<double>()) { PyErr_SetString(PyExc_TypeError, "Incorrect array data type"); p::throw_error_already_set(); } if (array.get_nd() != 2) { PyErr_SetString(PyExc_TypeError, "Incorrect number of dimensions"); p::throw_error_already_set(); } if (!(array.get_flags() & np::ndarray::C_CONTIGUOUS)) { PyErr_SetString(PyExc_TypeError, "Array must be row-major contiguous"); p::throw_error_already_set(); } double * iter = reinterpret_cast<double*>(array.get_data()); int rows = array.shape(0); int cols = array.shape(1); boost::scoped_array<double*> ptrs(new double*[rows]); for (int i = 0; i < rows; ++i, iter += cols) { ptrs[i] = iter; } fill2(ptrs.get(), array.shape(0), array.shape(1)); }
/* ** Convert a double precision floating point number into its printable ** form. */ int nsTextFormatter::cvt_f(SprintfStateStr* aState, double aDouble, int aWidth, int aPrec, const char16_t aType, int aFlags) { int mode = 2; int decpt; int sign; char buf[256]; char* bufp = buf; int bufsz = 256; char num[256]; char* nump; char* endnum; int numdigits = 0; char exp = 'e'; if (aPrec == -1) { aPrec = 6; } else if (aPrec > 50) { // limit precision to avoid PR_dtoa bug 108335 // and to prevent buffers overflows aPrec = 50; } switch (aType) { case 'f': numdigits = aPrec; mode = 3; break; case 'E': exp = 'E'; MOZ_FALLTHROUGH; case 'e': numdigits = aPrec + 1; mode = 2; break; case 'G': exp = 'E'; MOZ_FALLTHROUGH; case 'g': if (aPrec == 0) { aPrec = 1; } numdigits = aPrec; mode = 2; break; default: NS_ERROR("invalid aType passed to cvt_f"); } if (PR_dtoa(aDouble, mode, numdigits, &decpt, &sign, &endnum, num, bufsz) == PR_FAILURE) { buf[0] = '\0'; return -1; } numdigits = endnum - num; nump = num; if (sign) { *bufp++ = '-'; } else if (aFlags & _SIGNED) { *bufp++ = '+'; } if (decpt == 9999) { while ((*bufp++ = *nump++)) { } } else { switch (aType) { case 'E': case 'e': *bufp++ = *nump++; if (aPrec > 0) { *bufp++ = '.'; while (*nump) { *bufp++ = *nump++; aPrec--; } while (aPrec-- > 0) { *bufp++ = '0'; } } *bufp++ = exp; ::snprintf(bufp, bufsz - (bufp - buf), "%+03d", decpt - 1); break; case 'f': if (decpt < 1) { *bufp++ = '0'; if (aPrec > 0) { *bufp++ = '.'; while (decpt++ && aPrec-- > 0) { *bufp++ = '0'; } while (*nump && aPrec-- > 0) { *bufp++ = *nump++; } while (aPrec-- > 0) { *bufp++ = '0'; } } } else { while (*nump && decpt-- > 0) { *bufp++ = *nump++; } while (decpt-- > 0) { *bufp++ = '0'; } if (aPrec > 0) { *bufp++ = '.'; while (*nump && aPrec-- > 0) { *bufp++ = *nump++; } while (aPrec-- > 0) { *bufp++ = '0'; } } } *bufp = '\0'; break; case 'G': case 'g': if ((decpt < -3) || ((decpt - 1) >= aPrec)) { *bufp++ = *nump++; numdigits--; if (numdigits > 0) { *bufp++ = '.'; while (*nump) { *bufp++ = *nump++; } } *bufp++ = exp; ::snprintf(bufp, bufsz - (bufp - buf), "%+03d", decpt - 1); } else { if (decpt < 1) { *bufp++ = '0'; if (aPrec > 0) { *bufp++ = '.'; while (decpt++) { *bufp++ = '0'; } while (*nump) { *bufp++ = *nump++; } } } else { while (*nump && decpt-- > 0) { *bufp++ = *nump++; numdigits--; } while (decpt-- > 0) { *bufp++ = '0'; } if (numdigits > 0) { *bufp++ = '.'; while (*nump) { *bufp++ = *nump++; } } } *bufp = '\0'; } } } char16_t rbuf[256]; char16_t* rbufp = rbuf; bufp = buf; // cast to char16_t while ((*rbufp++ = *bufp++)) { } *rbufp = '\0'; return fill2(aState, rbuf, NS_strlen(rbuf), aWidth, aFlags); }
void scan(unsigned char* in) { { unsigned char yych; if (limit1 <= cursor1) fill1(1); yych = *cursor1; { static void *yytarget[256] = { &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy2, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy11, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy3, &&yy5, &&yy7, &&yy9, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13 }; goto *yytarget[yych]; } yy2: yy3: ++cursor1; return "a"; yy5: ++cursor1; return "b"; yy7: ++cursor1; return "c"; yy9: ++cursor1; return "d"; yy11: ++cursor1; return "1"; yy13: ++cursor1; return "."; } } void scan(unsigned short* in) { { unsigned short yych; if (limit2 <= cursor2) fill2(1); yych = *cursor2; if (yych & ~0xFF) { goto yy13; } else { static void *yytarget[256] = { &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy2, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy11, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy3, &&yy5, &&yy7, &&yy9, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13, &&yy13 }; goto *yytarget[yych]; } yy2: yy3: ++cursor2; return "a"; yy5: ++cursor2; return "b"; yy7: ++cursor2; return "c"; yy9: ++cursor2; return "d"; yy11: ++cursor2; return "2"; yy13: ++cursor2; return "."; } }
void Board::update_territory() { if (s) memcpy(tscore, s->score, sizeof(score)); //tscore = s->score; else memcpy(tscore, score, sizeof(score)); //tscore = score; int i, j; for (i=0; i<size; i++) for (j=0; j<size; j++) { switch (dead[i][j]) { case 0: territory[i][j] = b[i][j]; break; case 1: territory[i][j] = EMPTY; break; case 2: territory[i][j] = 32; break; } if (dead[i][j] == 1) { tscore[b[i][j] == WHITE? 0:1]++; } } for (i=0; i<size; i++) for (j=0; j<size; j++) { if (territory[i][j] == EMPTY) { fill2(i, j, territory, size); bool w=0, b=0; for (int i=0; i<size; i++) for (int j=0; j<size; j++) { if (territory[i][j] == 3) { if (i+1<size) { char c = territory[i+1][j]; if (c==WHITE) w=1; else if (c==BLACK) b=1; } if (j+1<size) { char c = territory[i][j+1]; if (c==WHITE) w=1; else if (c==BLACK) b=1; } if (i-1>=0) { char c = territory[i-1][j]; if (c==WHITE) w=1; else if (c==BLACK) b=1; } if (j-1>=0) { char c = territory[i][j-1]; if (c==WHITE) w=1; else if (c==BLACK) b=1; } } } { for (int i=0; i<size; i++) for (int j=0; j<size; j++) { if (territory[i][j] == 3) { if (w &&!b) { territory[i][j] = 4+WHITE; tscore[1]++; } else if (!w &&b) { territory[i][j] = 4+BLACK; tscore[0]++; } else territory[i][j] = 4+EMPTY; } } } } } update_pos(); // UI->cells->refresh(); }