int P11::solve() { int maxProduct = 0; for (int i = 0; i < 20; i++) // For each row { for (int j = 0; j < 20; j++) // For each column { // Diagonal products (upper left to lower right) if (i < 20-3 && j < 20-3) { performMultiplication(i, j, 1, 1, &maxProduct); } // Diagonal products (lower left to upper right) if (i >= 3 && j < 20-3) { performMultiplication(i, j, -1, 1, &maxProduct); } // Vertical products if (i < 20-3) { performMultiplication(i, j, 1, 0, &maxProduct); } // Horizontal products if (j < 20-3) { performMultiplication(i, j, 0, 1, &maxProduct); } } } return maxProduct; }
void performIqOperation(uint8_t operation, qParams_t * params) { switch (operation) { case 0: { params->operationResult = performAddition(params->operandA, params->qFormatA, params->operandB, params->qFormatB, params->qFormatResult); }break; case 1: { params->operationResult = performMultiplication(params->operandA, params->qFormatA, params->operandB, params->qFormatB, params->qFormatResult); }break; case 2: { params->operationResult = performDivision(params->operandA, params->qFormatA, params->operandB, params->qFormatB, params->qFormatResult); }break; default: break; } }