24 de dezembro de 2006

Ubuntu Forums - desafio de programação semanal (22/12)

Mais um desafio de programação do fórum gringo do Ubuntu, os desafios estão ficando cada vez mais interessante. Essa semana o problema foi dividido em duas partes. A primeira é verificar se uma palavra, frase ou número era palíndrome, a segunda é encontrar o menor número palíndrome após um número dado.

Um exemplo para vocês entenderem melhor:

1ª parte) Dado a palavra "radar", o programa retornaria true, já que essa palavra lida de trás para frente também é radar.

2ª parte) Dado um número 199, o programa retornaria 202, já que 202 é o menor número após 199 que é palíndrome.

Diferentemente do teste passado, dessa vez muitas respostas foram aparecendo, incluindo uma em Ruby. Mesmo assim não me intimidei e mandei uma outra resposta escrita nessa mesma linguagem.

class Palindrome

def initialize(phrase)
@phrase = phrase.gsub(/\s|,|'|\./,'').downcase
end

def is_it_palindrome?
@phrase == @phrase.reverse
end

def next_palindrome_integer
integer = @phrase.to_i

until integer.to_s == integer.to_s.reverse
integer+=1
end

return integer
end

end

print "Enter a phrase: "
my_phrase = Palindrome.new(gets.chomp)
puts "Is it palindrome? #{my_phrase.is_it_palindrome?}"

print "Enter a number: "
my_number = Palindrome.new(gets.chomp)
puts "The next integer palindrome is: #{my_number.next_palindrome_integer}"

Eu gostei muito do resultado, o código ficou bem limpo e fácil de entender, o método reverse para strings ajudou muito também.

Novamente eu vou incentivar aos leitores que saibam programar que postem suas soluções tanto aqui nos comentários quanto no tópico do fórum oficial do Ubuntu.

Nenhum comentário:

Postar um comentário