multires.c 508 B

1234567891011121314151617181920212223
  1. #include "local_proto.h"
  2. int pattern_matching(int *pattern)
  3. {
  4. int n, i;
  5. unsigned char binary = 0, result = 255, test = 0;
  6. unsigned char source = 32;
  7. int sign = -1;
  8. for (i = 0, n = 1; i < 8; i++, n *= 2)
  9. binary += (pattern[i] == sign) ? n : 0;
  10. /* rotate */
  11. for (i = 0; i < 8; ++i) {
  12. if ((i &= 7) == 0)
  13. test = binary;
  14. else
  15. test = (binary << i) | (binary >> (8 - i));
  16. result = (result < test) ? result : test;
  17. }
  18. return (result & source == source) ? 1 : 0;
  19. }