On Fri, Jun 18, 2010 at 12:46 PM, Abder-rahman Ali <
[email protected]> wrote:
true?
Thanks.
Posted via http://www.ruby-forum.com/.
Well, this used to be easy to show, but apparently since ascii has been
abandoned, and I don’t know unicode, I have to resort to hacky things
like
this to explain it.
$chars = (1…128).inject(Hash.new) { |chars,num| chars[num.chr] = num ;
chars }
def to_number_array(str)
str.split(//).map { |char| $chars[char] }
end
to_number_array ‘Xeo’ # => [88, 101, 111]
to_number_array ‘xeo’ # => [120, 101, 111]
to_number_array ‘ball’ # => [98, 97, 108, 108]
to_number_array ‘ABC’ # => [65, 66, 67]
to_number_array ‘abc’ # => [97, 98, 99]
In this case, $chars is a hash that will take a 1 character string, and
return its ascii value. So the method receives a String, and returns an
array where each index is the ascii value of the character.
Then to understand why one would be less than or greater than the other,
go
through index by index, comparing the number in that index. If the two
strings (or in this case, their array representations that I made) have
different numbers, then whichever has the smaller number is considered
less
than the other. If you run out of indexes on one of them, then that one
comes before the other. If you run out of indexes on them both
simultaneously, then they are equal.