Palindrome mathematisch ausdrücken

Neue Frage »

Connor Auf diesen Beitrag antworten »
Palindrome mathematisch ausdrücken
Meine Frage:
Hey, ich bringe mir gerade selber programmieren bei und versuche mich dafür an den Euler Problemen. Die Aufgabe lautet, das größtmögliche Palindromprodukt, aus zwei dreistelligen Zahlen zu finden.
Ich versuche mich schon eine Weile daran, hadere aber an einer Sache.
Ich finded einfach keine mathematische "Eigenschaft" von Palindromen, die ich für meinen Code verwenden könnte. Kann mir vielleicht jemand helfen?

Meine Ideen:
Ich weiß, dass alle einser Reihen miteinander multipliziert Palindrome ergeben, aber sind dann ja nicht die größt möglichen :/
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Connor
Ich finded einfach keine mathematische "Eigenschaft" von Palindromen, die ich für meinen Code verwenden könnte.

Wieso das nicht? Das Ergebnis wird sicherlich eine sechsstellige Zahl sein in der Form abccba. Na wenn das nicht Information in Hülle und Fülle ist für eine entsprechende Bruteforce-Suche.
Connor Auf diesen Beitrag antworten »

Hey HAL 9000,

ich habe mich gerade mal weiter erkundigt, und dabei den "reverse" Befehl für Python gefunden.
So kann ich mein Programm auf jeden Fall die größtmöglichen Palindrome, kleiner 998 001 finden lassen und dann jeweils für a <= 999 * b <= 999 überprüfen lassen, ob es eine Lösung gibt. Meinst du das mit Bruteforce?
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Connor
und dabei den "reverse" Befehl für Python gefunden.

Kenne ich nicht - ist der auf Strings bezogen? Ich hatte eigentlich daran gedacht, das selbst zu implementieren, ist von der Performance her ziemlich sicher schneller als eine Stringvariante. In C etwa könnte ein Palindromcheck für (vorher bekanntermaßen) genau -stellige Zahlen so aussehen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
int PalindromCheck (int n, int m)
{
   int p = 0;
   while (m > 0)
   {
      p = 10*p + (n % 10);
      n /= 10;
      m--;
   }
   return (n == p);
}
Ist natürlich bei 32Bit-Integerzahlen nur für tauglich, aber das reicht ja hier.


Zitat:
Original von Connor
und dann jeweils für a <= 999 * b <= 999 überprüfen lassen, ob es eine Lösung gibt.

So ähnlich, allerdings würde ich wegen Symmetrie nur mit überprüfen.
Connor Auf diesen Beitrag antworten »

Habs hinbekommen und es war richtig,
vielen Dank a Freude
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »