Example #1
0
int patterncalculated(char *pattern, extmanager MyManager, int loc) {
  int i;
  if (pattern == NULL) return 0;
  for (i = loc - 1; i > -1; i--)
    if (patternmatch(pattern, MyManager.varmap.vars[i])) return 1;
  return 0;
}
Example #2
0
int main()
{
    int i,j,k,n,tc;
    scanf("%d",&tc);

    /*char *p="na";
    char *t="banananobano";*/
    while(tc--)
    {
        scanf("%d %d",&n,&k);
        t[0]='\0';
        for(i=1;i<=n;i++)
        {
            itoa(i,temp,10);
            strcat(t,temp);
            temp[0]='\0';
        }
        itoa(k,p,10);
        //puts(t);
        //puts(p);
        patternmatch(p,t);
    }


   // pref=(malloc(strlen(p)*sizeof(int)));

    //prefix(p);
    /*for(i=1;i<=strlen(p);i++)
    {
        printf("%d\n",pref[i]);
    }*/


    return 0;
}
Example #3
0
void
finish(const struct teelib* tlibs, const char* ptrn)
{
  for(size_t i=0; i < MAX_FREEPROCS && tlibs[i].pattern; ++i) {
    const struct teelib* tl = &tlibs[i];
    if(patternmatch(tl, ptrn) && tl->finish) {
      tl->finish(ptrn);
    }
  }
}
Example #4
0
void
stream(const struct teelib* tlibs, const char* ptrn, const void* buf,
       const size_t n)
{
  for(size_t i=0; i < MAX_FREEPROCS && tlibs[i].pattern; ++i) {
    if(patternmatch(&tlibs[i], ptrn)) {
      tlibs[i].transfer(ptrn, buf, n);
    }
  }
}
Example #5
0
bool
matches(const struct teelib* tlibs, const char* ptrn)
{
  for(size_t i=0; i < MAX_FREEPROCS && tlibs[i].pattern; ++i) {
    if(patternmatch(&tlibs[i], ptrn)) {
      return true;
    }
  }
  return false;
}
Example #6
0
void
file(const struct teelib* tlibs, const char* ptrn)
{
  for(size_t i=0; i < MAX_FREEPROCS && tlibs[i].pattern; ++i) {
    if(patternmatch(&tlibs[i], ptrn) && tlibs[i].file) {
      /* since our file *is* the pattern to match against, it's also the file
       * we want to give to the 'file' function. */
      tlibs[i].file(ptrn);
    }
  }
}
Example #7
0
gradientpair CalcGradient(extmanager MyManager, DdNode *Current, int TargetVar,
                          char *TargetPattern) {
  DdNode *h, *l;
  hisnode *Found;
  char *curnode;
  gradientpair lvalue, hvalue, tvalue;
  double this_probability;
  double *gradient;
  if (params.debug) {
    curnode = GetNodeVarNameDisp(MyManager.manager, MyManager.varmap, Current);
    fprintf(stderr, "%s\n", curnode);
  }
  if (Current == MyManager.t) {
    tvalue.probability = 1.0;
    tvalue.gradient = 0.0;
    return tvalue;
  }
  if (Current == MyManager.f) {
    tvalue.probability = 0.0;
    tvalue.gradient = 0.0;
    return tvalue;
  }
  if ((Found = GetNode(MyManager.his, MyManager.varmap.varstart, Current)) !=
      NULL) {
    tvalue.probability = Found->dvalue;
    tvalue.gradient = *((double *)Found->dynvalue);
    return tvalue;
  }
  l = LowNodeOf(MyManager.manager, Current);
  h = HighNodeOf(MyManager.manager, Current);
  if (params.debug)
    fprintf(stderr, "l(%s)->", curnode);
  lvalue = CalcGradient(MyManager, l, TargetVar, TargetPattern);
  if (params.debug)
    fprintf(stderr, "h(%s)->", curnode);
  hvalue = CalcGradient(MyManager, h, TargetVar, TargetPattern);
  this_probability = sigmoid(
      MyManager.varmap.dvalue[GetIndex(Current) - MyManager.varmap.varstart],
      params.sigmoid_slope);
  tvalue.probability = this_probability * hvalue.probability +
                       (1 - this_probability) * lvalue.probability;
  tvalue.gradient = this_probability * hvalue.gradient +
                    (1 - this_probability) * lvalue.gradient;
  if ((GetIndex(Current) == TargetVar) ||
      ((TargetPattern != NULL) &&
       patternmatch(TargetPattern, MyManager.varmap.vars[GetIndex(Current)]))) {
    tvalue.gradient += hvalue.probability - lvalue.probability;
  }
  gradient = (double *)malloc(sizeof(double));
  *gradient = tvalue.gradient;
  AddNode(MyManager.his, MyManager.varmap.varstart, Current, tvalue.probability,
          0, gradient);
  return tvalue;
}
Example #8
0
void
metadata(const struct teelib* tlibs, const char* ptrn, const size_t dims[3],
         enum FPDataType type)
{
  for(size_t i=0; i < MAX_FREEPROCS && tlibs[i].pattern; ++i) {
    if(patternmatch(&tlibs[i], ptrn)) {
      if(tlibs[i].metadata) {
        tlibs[i].metadata(ptrn, dims, type);
      }
    }
  }
}
Example #9
0
static int
match(char *pat, char *string)
{
	return patternmatch(pat, dashcount(pat), string, dashcount(string));
}
Example #10
0
static int
patternmatch(char *pat, int patdashes, char *string, int stringdashes)
{
	int c, t;

	if (stringdashes < patdashes)
		return 0;

	for (;;) {
	    switch (c = *pat++) {
	    case '*':
			if (!(c = *pat++))
				return 1;

			if (c == '-') {
				patdashes--;
				for (;;) {
					while ((t = *string++) != '-')
						if (!t)
							return 0;
					stringdashes--;
					if (patternmatch(pat, patdashes, string, stringdashes))
						return 1;
					if (stringdashes == patdashes)
						return 0;
				}
			} else {
				for (;;) {
					while ((t = *string++) != c) {
						if (!t)
							return 0;
						if (t == '-') {
							if (stringdashes-- < patdashes)
								return 0;
						}
					}
					if (patternmatch(pat, patdashes, string, stringdashes))
						return 1;
				}
			}
			break;
	    case '?':
			if (*string++ == '-')
				stringdashes--;
			break;
	    case '\0':
			return (*string == '\0');
	    case '-':
			if (*string++ == '-') {
				patdashes--;
				stringdashes--;
				break;
			}
			return 0;
	    default:
			if (c == *string++)
				break;
			return 0;
	    }
	}
}