[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:7846] Re: Next amusing problem: talking integers (was Re: Code sample for improvement)

From: "Brian F. Feldman" <green@...>
Date: 2000-12-21 08:32:59 UTC
List: ruby-talk #7846
David Alan Black <dblack@candle.superlink.net> wrote:
> On Wed, 20 Dec 2000, Stephen White wrote:
> 
> > Hopefully this code dissection, rewriting and optimisation becomes a
> > regular feature. Anyone else want to post the next amusing problem
> > for us to work on? :)
> 
> Just wait til the online cookbook is up and running :-)
> 
> Meanwhile -- well, am I allowed to do the cowardly thing, and
> pose this as a puzzle, without actually having done it yet?  I did
> do it in Perl, but am curious to see ideas for it in Ruby.
> 
> Namely......
> 
> Input:   123456
> Output:  "one-hundred twenty-three thousand four-hundred fifty-six"

irb(main):001:0> load 'numreader.rb'
true
irb(main):002:0> NumReader::English.say(123456)
"one hundred twenty-three thousand four hundred fifty-six"
irb(main):003:0> NumReader::English.say(-42111000404
irb(main):004:1> )
"negative forty-two billion one hundred eleven million four hundred four"

The problem is that originally I had a NumReader::French (module) and 
included that from NumReader::English (module), but I need to rethink how 
the constants would be set and overridden.

#!/usr/local/bin/ruby
module NumReader
    module English
        NEGATIVE = "negative"
        n = %w(zero one two three four five six seven eight nine
          ten eleven twelve thirteen)
        NUMBERS = n +
          (4 .. 9).collect {|num| n[num] + "teen"}
        TENS = [nil, nil] + %w(twenty thirty forty fifty sixty seventy eighty
          ninety)
        HUNDRED = "hundred" 
        ORDERS_OF_3 = [""] + %w(thousand million billion trillion zillion
          quadrillion quintillion sextillion septillion octillion nonillion
          decillion undecillion duodecillion tredecillion quattuordecillion
          quindecillion sexdecillion septendecillion octodecillion
          novemdecillion vigintillion)
        def English.say(num)
            num = num.to_i
            if num < 0
                num = -num
                negative = true
            else
                negative = false
            end
            return NUMBERS[0].dup if num.zero?
            answer = []
            i = 0
            while num > 0
                x = num % 1000
                if x.nonzero?
                    f = less_than_1000(x)
                    if i != 0
                        answer.push([f, ORDERS_OF_3[i]])
                    else
                        answer.push(f)
                    end
                end
                i += 1
                num /= 1000
            end
            answer.push(NEGATIVE) if negative
            answer.reverse.join(" ")
        end
        private
        def English.less_than_100(num)
            case num
                when 0 .. 19
                    NUMBERS[num]
                when 20 .. 99
                    units = num % 10
                    if units.nonzero?
                        TENS[num / 10] + "-" + NUMBERS[units]
                    else
                        TENS[num / 10]
                    end
                else
                raise ArgumentError, "number not between 0 and 99"
            end
        end
        def English.less_than_1000(num)
            hundreds = num / 100
            if hundreds.nonzero?
                NUMBERS[hundreds] + " " + HUNDRED +
                  ((num % 100).nonzero? ? " " + less_than_100(num % 100) : "")
            else
                  less_than_100(num % 100)
            end
        end
    end
end

--
 Brian Fundakowski Feldman           \  FreeBSD: The Power to Serve!  /
 green@FreeBSD.org                    `------------------------------'


In This Thread