void printVector(SEXP x, int indx, int quote) { /* print R vector x[]; if(indx) print indices; if(quote) quote strings */ R_xlen_t n; if ((n = XLENGTH(x)) != 0) { R_xlen_t n_pr = (n <= R_print.max +1) ? n : R_print.max; /* '...max +1' ==> will omit at least 2 ==> plural in msg below */ switch (TYPEOF(x)) { case LGLSXP: printLogicalVector(LOGICAL(x), n_pr, indx); break; case INTSXP: printIntegerVector(INTEGER(x), n_pr, indx); break; case REALSXP: printRealVector(REAL(x), n_pr, indx); break; case STRSXP: if (quote) printStringVector(STRING_PTR(x), n_pr, '"', indx); else printStringVector(STRING_PTR(x), n_pr, 0, indx); break; case CPLXSXP: printComplexVector(COMPLEX(x), n_pr, indx); break; case RAWSXP: printRawVector(RAW(x), n_pr, indx); break; } if(n_pr < n) Rprintf(" [ reached getOption(\"max.print\") -- omitted %d entries ]\n", n - n_pr); } else #define PRINT_V_0 \ switch (TYPEOF(x)) { \ case LGLSXP: Rprintf("logical(0)\n"); break; \ case INTSXP: Rprintf("integer(0)\n"); break; \ case REALSXP: Rprintf("numeric(0)\n"); break; \ case CPLXSXP: Rprintf("complex(0)\n"); break; \ case STRSXP: Rprintf("character(0)\n"); break; \ case RAWSXP: Rprintf("raw(0)\n"); break; \ } PRINT_V_0; }
int main() { int largestPalindrome = 0; int numberToCheck = 0; std::vector<int> candidatePalindromes; for (int factor1 = maximumNumber; factor1 >= minimumNumber ; --factor1) { for (int factor2 = maximumNumber; factor2 >= factor1 ; --factor2) { numberToCheck = factor1 * factor2; if(integerIsPalindrome(numberToCheck)) { candidatePalindromes.push_back(numberToCheck); if(numberToCheck > largestPalindrome) { largestPalindrome = numberToCheck; } } } } // printIntegerVector(digitsOfInteger(920029)); // std::cout << "\nANSWER: " << integerIsPalindrome(920029) <<"\n"; printIntegerVector(candidatePalindromes); std::cout << "\nANSWER: " << largestPalindrome <<"\n"; }