| Paste number 50979: | WHY USE LISP!? C IS FASTAR?!?!? |
| Pasted by: | perlbot |
| 8 months, 1 week ago | |
| #lispcafe | Context in IRC logs | |
| Paste contents: |
| field_set* set_difference (field_set *set1, field_set *set2) { field_set *difference = (field_set*)malloc(sizeof(field_set)); int i, set1_alone_fields, set2_alone_fields, intersect_fields, intersect_min_mines, intersect_max_mines; difference->num_fields = 0; for (i = 0; i < set1->num_fields; ++i) { int j, found = 0; for (j = 0; j < set2->num_fields; ++j) if (set1->fields[i].x == set2->fields[j].x && set1->fields[i].y == set2->fields[j].y) { found = 1; break; } if (!found) difference->fields[difference->num_fields++] = set1->fields[i]; } if (difference->num_fields == 0) { free(difference); return 0; } intersect_fields = set1->num_fields - difference->num_fields; set1_alone_fields = set1->num_fields - intersect_fields; set2_alone_fields = set2->num_fields - intersect_fields; intersect_min_mines = MAX(0, MAX(set1->min_mines - set1_alone_fields, set2->min_mines - set2_alone_fields)); difference->max_mines = MIN(difference->num_fields, set1->max_mines - intersect_min_mines); intersect_max_mines = MIN(intersect_fields, MIN(set1->max_mines, set2->max_mines)); difference->min_mines = MAX(0, set1->min_mines - intersect_max_mines); make_set_bounds(difference); canonize_set(difference); return difference; } |
This paste has no annotations.