On 15/06/06, Adelle Hartley <[EMAIL PROTECTED]> wrote:
Earlier, I wrote:
>
> For Each p In Primes.UpTo(n)
> ...real code here...
> Next p
<snip>
>
> I think something very similar can be done in Ruby, and the
> implementation of "UpTo" would not be as bulky as the VB equivalent.
It seems I might be wrong, or at least, I don't know how to go about this in
Ruby. I will give this another try tomorrow, but any Ruby experts who are
able to shed light on this can feel free to jump in now.
Adelle.
_______________________________________________
coders mailing list
[email protected]
http://lists.slug.org.au/listinfo/coders
Hi Adelle,
No expert at ruby I'm afraid.
But the upto method works on objects of type (or class) Fixnum. There
isn't one for Array objects although there may be plenty of ways to do
it.
In irb, you can check by type something like:
1.methods.sort
to see the methods (where '1' is an instance of Fixnum).
Someone posted a prime number generator one-liner on the ruby-talk
list a while ago. In irb session below, I've just set it to go to
1000:
irb(main):039:0>
primes=(2..1000.to_i).inject([]){|p,c|p.detect{|n|c%n==0}?p:p<<c}
=> [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59,
61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131,
137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199,
211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373,
379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457,
461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557,
563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641,
643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733,
739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827,
829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929,
937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
If you wanted first 21, you could say something like (in irb):
irb(main):044:0> 0.upto(20) do |i| puts primes[i] end
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
=> 0
I'm not trying to link this back to the previous posts.
Daniel
_______________________________________________
coders mailing list
[email protected]
http://lists.slug.org.au/listinfo/coders