Forumet - ProjectEuler- testa dina programmeringskunskaper

ProjectEuler- testa dina programmeringskunskaper

336 0 8
Project Euler är ju trevligt och så, men det testar inte särskilt många programmeringskunskaper du kommer att använda till att tjäna brödfödan.

Varför finns det ingen "project vardagsrealismprogrammering" där du får en enorm blobb obefintligt kommenterad, vansinnigt strukturerad källkod, och får till uppgift att göra en fungerande, välpolerad produkt av det?

Jag vill f ö påpeka att Euler sannolikt är historiens ondaste man. Varenda jävla koncept som är det minsta jobbigt i mina mattekurser har vid närmare efterforskning visat sig vara upptäckt av just Euler.

Spana också in:

Har löst några problem nu, men jag har fastnat på fyran (trots att jag klarat både femman och sexan [confused]).

:

A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.

Find the largest palindrome made from the product of two 3-digit numbers.


Så här har jag tänkt:
* Fixa en lista med alla möjliga multipler av tresiffriga nummer.
* Gå över listan bakifrån och skriv ut den första multipeln som är == sig själv bakifrån.

Så här har jag gjort det i Python:
from copy import copy

def reverse(chars):
ochars = ''
beyond = len(chars)
for ix in range(beyond):
ochars += chars[beyond - 1 - ix]
return ochars

def main():
list = []
for i in xrange(100,1000):
list.append(i)
list2 = copy(list)
products = []
n = 0
for i in list:
products.append(i*list2[ n ])
n+=1
products.reverse()
i = 0
while True:
string = str(products)
if string == reverse(string):
print string
break
i += 1

if name == '__main__': main()


Om vi bortser från det faktum att det är en del fula grejer däri (det måste finnas ett bättre sätt att få en lista från 100 till 999 än att köra en for-loop och manuellt lägga in varje nummer) så fungerar det inte riktigt som det ska ändå.

Själva palindromgrejen fungerar ypperligt, men jag tror att det är delen där jag ska få ut alla multipler av två tresiffriga tal som fuckar upp det för mig. Problemet är att jag inte vet vad felet är.

Den högsta palindromen man kan få fram ska vara 906609, men jag får ut 698896.

Edit: Nevermind. Fick det att fungera.