-2

I'm trying to multiply two numbers and then reverse the answer and then compare the original value with the reversed value to see if they are the same numbers. After I reverse the value how do I set it back to an int or a string so I can compare them?

int i = 0;

var x = Enumerable.Range(100,999);
var y = Enumerable.Range(100,999);

foreach (var xValue in x)
{
    foreach (var yValue in y)
    {
        i = (xValue * yValue);

        var t = i.ToString();
        var tempt = t.Reverse();

        var temp = new string(tempt);

        if (i.ToString() == temp)
        {

        }
    }
}
Tim
  • 41,901
  • 18
  • 127
  • 145
NNassar
  • 485
  • 5
  • 11
  • 25

3 Answers3

0
int n; //given number
int left = n; 
int rev = 0;
while(left>0)
{
r = left % 10; //take the last number  
rev = rev * 10 + r; //add it to a new number to flip it
left = left / 10; //left = Math.floor(left / 10);  
}
Robert P
  • 137
  • 2
  • 10
  • While this may solve the problem OP is trying to solve, this is not an answer to the question. Would be good to add some textual explanation too – Tim May 22 '14 at 12:51
0

Like this perhaps? (One shouldn't really give away answers to projecteuler problems, but this is only problem 4, so what the heck)

    public int SolveProblem004()
    {
        int result = 0;
        for (int a = 999; a >= 100; --a) {
            for (int b = 999; b >= a; --b) {
                int product = a * b;
                if (product <= result) break;
                if (IsPalindromic(product)) { result = product; break; }
            }
        }
        return result;
    }

    public static bool IsPalindromic(int i)
    {
        return i == Reverse(i);
    }

    public static int Reverse(int number)
    {
        if (number < 0) return -Reverse(-number);
        if (number < 10) return number;
        int reverse = 0;
        while (number > 0) {
            reverse = reverse * 10 + number % 10;
            number /= 10;
        }
        return reverse;
    }
Dennis_E
  • 8,751
  • 23
  • 29
  • You can google out all the answers anyway. I just don't get what's the point of doing that.. =/ – msmolcic May 22 '14 at 13:26
  • 1
    @msmolcic92 I totally agree, but just having the answer doesn't teach anyone anything. The fun part is to figure out how. – Dennis_E May 22 '14 at 13:30
  • Wasn't really interested in projecteuler, I was more interested in how I could do this in C#. Thanks – NNassar Jan 04 '15 at 18:28
0

You can do it this way:

int i = 0;

var x = Enumerable.Range(100, 999);
var y = Enumerable.Range(100, 999);

foreach (var xValue in x)
{
    foreach (var yValue in y)
    {
        i = (xValue * yValue);

        char[] number = i.ToString().ToCharArray();
        char[] reversedNumber = i.ToString().ToCharArray();
        Array.Reverse(reversedNumber);

        if (new string(number).Equals(new string(reversedNumber)))
        {

        }
    }
}

It will enter inside if loop if number is the same as reversed number and will just pass by in oposite case.

msmolcic
  • 6,407
  • 8
  • 32
  • 56