Skip to content

Commit d168c56

Browse files
committed
feat: add payment system filter
1 parent 9c2bf0e commit d168c56

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

src/main.c

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,12 @@ void check_user_age(bool *z, const User *x, GrB_Index _i, GrB_Index _j, const ui
6565
*z = (x->age > *y);
6666
}
6767
}
68-
68+
void check_payment_system(bool *z, const Card *x, GrB_Index _i, GrB_Index _j, const uint8_t *y)
69+
{
70+
{
71+
*z = ((x->system) == MIR);
72+
}
73+
}
6974
void owns_bool_mult(bool *z, const bool *x, const EdgeOwns *y)
7075
{
7176
*z = *x;
@@ -175,8 +180,8 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards)
175180
{
176181
GrB_Info info;
177182
// 1 - 4 & 10 --- users
178-
User user1 = {MALE, 52};
179-
User user2 = {MALE, 25};
183+
User user1 = {FEMALE, 52};
184+
User user2 = {FEMALE, 25};
180185
User user3 = {FEMALE, 40};
181186
User user4 = {MALE, 42};
182187
User user10 = {MALE, 35};
@@ -191,9 +196,9 @@ GrB_Info init_vertices(GrB_Vector *users, GrB_Vector *cards)
191196
Card card6 = {MIR, 700000.0};
192197
Card card7 = {VISA, 800000.0};
193198
Card card8 = {MASTERCARD, 900000.0};
194-
Card card9 = {MASTERCARD, 10000000.0};
195-
Card card11 = {MASTERCARD, 99000000.0};
196-
Card card12 = {MASTERCARD, 99000000.0};
199+
Card card9 = {VISA, 10000000.0};
200+
Card card11 = {MIR, 99000000.0};
201+
Card card12 = {MIR, 99000000.0};
197202
TRY(GrB_Vector_setElement_UDT(*cards, &card5, 4));
198203
TRY(GrB_Vector_setElement_UDT(*cards, &card6, 5));
199204
TRY(GrB_Vector_setElement_UDT(*cards, &card7, 6));
@@ -265,7 +270,7 @@ int main()
265270
TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, user_age, users, &age, NULL));
266271
GxB_print(v, GxB_COMPLETE);
267272
TRY(GrB_Matrix_diag(&ID, v, 0));
268-
273+
269274
// ------------------------------------------------------------------------
270275
// apply user filters
271276
// ------------------------------------------------------------------------
@@ -298,7 +303,18 @@ int main()
298303
// ------------------------------------------------------------------------
299304
// build filter for tx matrix
300305
// ------------------------------------------------------------------------
306+
307+
// get cards with MIR payment system only
301308
TRY(GrB_Matrix_free(&ID));
309+
TRY(GrB_Vector_free(&v));
310+
TRY(GrB_Vector_new(&v, GrB_BOOL, VERTICES_NUMBER));
311+
TRY(GrB_Vector_assign_BOOL(v, NULL, NULL, false, GrB_ALL, VERTICES_NUMBER, NULL));
312+
GrB_IndexUnaryOp payment_system;
313+
TRY(GrB_IndexUnaryOp_new(&payment_system, (GxB_index_unary_function)&check_payment_system, GrB_BOOL, card, GrB_UINT8));
314+
uint8_t pay_sys = MIR;
315+
TRY(GrB_Vector_apply_IndexOp_UDT(v, NULL, NULL, payment_system, cards, &pay_sys, NULL));
316+
TRY(GrB_Vector_eWiseMult_BinaryOp(filtered_cards, NULL, NULL, GrB_LAND, filtered_cards, v, NULL));
317+
302318
TRY(GrB_Matrix_diag(&ID, filtered_cards, 0));
303319
GxB_print(ID, GxB_COMPLETE);
304320

0 commit comments

Comments
 (0)