Created
January 6, 2011 01:05
-
-
Save plagelao/767336 to your computer and use it in GitHub Desktop.
StringCalculator recursivo
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rspec' | |
class StringCalculator | |
def add(string) | |
return add(string_without_last_summand(string)) + last_summand(string) if more_than_one_summand?(string) | |
string.to_i | |
end | |
def string_without_last_summand(string) | |
string[0...last_separator_index(string)] | |
end | |
def last_summand(string) | |
string[last_separator_index(string) + 1..-1].to_i | |
end | |
def more_than_one_summand?(string) | |
string.include?(',') || string.include?("\n") | |
end | |
def separator | |
return /,|\n/ | |
end | |
def last_separator_index(string) | |
-1*(string.reverse.index(separator) + 1) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ja, ja, ja. Tienes razón Alberto, me explico como un libro cerrado. A ver si ahora me hago entender mejor.
De todas formas es un tecnicismo, a lo que me quería referir es que la clase se podría mejorar si trata los objetos nulos o el que la cadena de texto no contenga números, o (si fuera c#) problemas de desbordamiento de enteros que no sé si en ruby hay que tenerlos en cuenta, etc.
Por último, agradecerte la contestación porque me ha "picado" a leer un poquito de Ruby para poder intentar aclarar lo mal que me he explicado, y me he encontrado sorprendido con las diferencias. Y me ha causado mucha curiosidad.