Problem 4

Zadanie :

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.

Moje rozwiązanie:

[code]$act_palindrome_int = 0

def is_palindrome?(x)
return true if x.to_s == x.to_s.reverse
end

$act_x = 100
$act_y = 100
loop {
$result = $act_x * $act_y
$act_palindrome_int = $result if is_palindrome?($result) and $act_palindrome_int < $result
$act_x += 1
if $act_x == 1000
$act_x = 100
$act_y += 1
end
if $act_y == 1000
break
end
}
puts $act_palindrome_int
$stdin.gets[/code]

Skoro ma to być największy palindrom, to dlaczego zaczynasz od 100 i idziesz w górę (= musisz sprawdzić wszystkie kombinacje aż do 1000x1000) zamiast zacząć od 999 i iść w dół? Wtedy wystarczy, że dojdziesz do jakiejkolwiek liczby mniejszej niż Twój największy palindrom i możesz zmniejszyć x.

Druga rzecz - korzystanie ze zmiennych globalnych jest ogólnie uznane za zły nawyk. Pryz tak prostym skrypcie nie będzie to miało znaczenia, ale im dłużej będziesz z tego korzystał tym trudniej będzie się odzwyczaić.

Moje rozwiązanie

To miałbyć palindrom 3 cyfrowej liczby, dlatego zaczynam od 100 :slight_smile:
A z tymi zmiennymi globalnymi to masz rację :slight_smile: Mogło się obyć bez nich.