höchste Palindrom mit 3-stelligen zahlen in python
Problem In 4 von http://projecteuler.net/ es sagt:
Ein Palindrom liest das gleiche in beide Richtungen. Das größte Palindrom aus dem Produkt von zwei 2-stelligen zahlen ist 9009 = 91 * 99.
Finden Sie die größte Palindrom aus dem Produkt von zwei 3-stellige zahlen.
Habe ich diesen code hier
def isPalindrome(num):
return str(num) == str(num)[::-1]
def largest(bot, top):
for x in range(top, bot, -1):
for y in range(top,bot, -1):
if isPalindrome(x*y):
return x*y
print largest(100,999)
Es sollte das größte Palindrom, es spuckt 580085
was ich glaube richtig zu sein, aber das Projekt euler nicht so denken, habe ich etwas falsch hier?
Wenn ich verehrte die for-Schleife hatte ich nicht denken, es durch, ich entfernte das Ding, der überprüft, ob der größte, ich Dummerchen. Hier ist der funktionierende code
def isPalindrome(num):
return str(num) == str(num)[::-1]
def largest(bot, top):
z = 0
for x in range(top, bot, -1):
for y in range(top,bot, -1):
if isPalindrome(x*y):
if x*y > z:
z = x*y
return z
print largest(100,999)
es spuckt 906609
Zur info die Antwort ist
Durch welche zahlen?
Weil ich hab 995 * 583 = 580085
Dort gehen wir, ich Dummerchen
forum.projecteuler.net/... und insbesondere forum.projecteuler.net/viewtopic.php?f=50&t=1989
906609
Durch welche zahlen?
Weil ich hab 995 * 583 = 580085
Dort gehen wir, ich Dummerchen
forum.projecteuler.net/... und insbesondere forum.projecteuler.net/viewtopic.php?f=50&t=1989
InformationsquelleAutor FabianCook | 2012-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Durchlaufen in umgekehrter nicht die größte
x*y
es findet das Palindrom mit der größtenx
. Es gibt eine größere Antwort, als 580085; hat es eine kleinerex
aber eine größerey
.Vereinbart. Eher als Rückkehr so bald wie finden Sie ein Palindrom ist, müssen Sie testen, jede Kombination und verfolgen Sie die größten.
Bälle. Hier gehen wir
Überprüfen Sie meine Beiträge, es funktioniert jetzt
InformationsquelleAutor John Kugelman
Wäre dies effizienter geschrieben werden als:
Finden Sie
itertools
und Generatoren sehr nützlich, wenn Sie tun Euler in Python.Ich bin nur mit python für dieses, weil es eine interpretierte Sprache ist, sonst hätte ich java benutzen
fair genug - Haskell ist sehr nützlich, da Sie aber auch 😉
Lohnt es sich das zu lernen?
Für diese Art von Dingen - auf jeden Fall - schauen Sie in den haskell-Lösungen auf der Euler-Antwort-board für diejenigen, die Sie bereits gelöst ist, finden Sie ein code-snippet (ich denke, es gibt auch eine website, die den code für das erste " n " viele Probleme in Haskell)
InformationsquelleAutor Jon Clements
Nicht die effizienteste Antwort, aber ich mag, dass es ist kompakt genug, um auf eine Zeile passen.
InformationsquelleAutor user3833942
Versucht, macht es effizienter, während es in der lesbar:
InformationsquelleAutor blueberryfields
Hier habe ich noch zwei 'Pause' zu verbessern, die Geschwindigkeit des Programms.
InformationsquelleAutor CooLee
Einfach:
InformationsquelleAutor kaffuffle
Jedes mal, wenn es doesnot haben, beginnen ab 999, wie es schon früher gefunden.Unten ist eine einfache Methode mit string-Funktion zu finden größte Palindrom mit drei stellige Zahl
InformationsquelleAutor Anoop M
Hier ist mein code um dieses problem zu lösen.
InformationsquelleAutor Darshi
580085 = 995 X 583, wo 906609 = 993 X 913
fand es nur durch die Anwendung von brute-forcing von oben nach unten!
InformationsquelleAutor CSEKU_150236
Hier ist mein Python-code:
InformationsquelleAutor Irmak Aydeniz
Überdenken: Effizienz und Leistung
Palindrom...: 997799, 0.000138998031616 Sek.
InformationsquelleAutor Rudney