Paste number 50979: WHY USE LISP!? C IS FASTAR?!?!?

Paste number 50979: WHY USE LISP!? C IS FASTAR?!?!?
Pasted by: perlbot
When:4 years, 2 months ago
Share:Tweet this! | http://paste.lisp.org/+13C3
Channel:#lispcafe
Paste contents:
Raw Source | XML | Display As
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.

Colorize as:
Show Line Numbers

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.