Matlab. One of the assignments inspired by Project Euler in the Matlab course I took before . I made some simple mistakes while trying to write an efficient algorithm. There were two inputs; digit number of the integer and limit number.
For example, the answer would be 198891 for dig = 3 and lim = 200000.
Question: A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99. Write a function that is called this way: >> n = palin_product(dig,lim); The function returns the largest palindrome smaller than lim that is the product of two dig digit numbers. If no such number exists, the function returns 0. (Inspired by Project Euler.)
Solution: Firstly, I created a product matrix of two numbers after describing their ranges based on their digits. As a small step, function checked if square of min number is not smaller than limit or not. Limit was applied and new array was sorted from top to bottom. Then, reverse of the product array was created. As a final stage, for-loop checked if there was any palindromic number in the array. First palindromic number coming in the loop became the largest one.
function [n] = palin_product(dig,lim)
max = 10^dig-1; %maximum number in its range
min = 10^(dig-1); %minimum number in its range
numbers = max : -1 : min; %range of numbers for each dig
p = numbers' * numbers; %product table
if min^2 >= lim %if square of min number is not smaller than lim
n = 0;
p = p(p<lim); %new product table after limit applied
p = sort(p,'descend'); %sorting the array from top to bottom
r = str2num(fliplr(num2str(p))); %reverse of the product
for i = 1:size(p) %checking the product with its reverse
if p(i) == r(i) %first palindromic number is the largest one
n = p(i);