[#408634] How do I make lots of classes aware of each other? — "Andrew S." <lists@...>

I'm apparently missing something fundamental in my knowledge of classes

10 messages 2013/07/02

[#408712] Ruby web service with REST support — "Shubhada S." <lists@...>

Hi All,

17 messages 2013/07/05

[#408812] create variables depending on counter — stefan heinrich <lists@...>

Hi community,

21 messages 2013/07/09

[#408854] execute commands within SMTP email code: send content in variables and not actual variables — dJD col <lists@...>

I am trying to send an email using the code below. I am able to send the

9 messages 2013/07/10

[#409031] tap { break } idiom deserves its own Kernel method? — Andy Lowry <lists@...>

I use this idiom from time to time:

13 messages 2013/07/22

[#409072] Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...>

This is what I want to do.

19 messages 2013/07/23
[#409102] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/24

[#409103] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/25

tamouse m. wrote in post #1116598:

[#409122] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/26

[#409142] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/26

tamouse m. wrote in post #1116750:

[#409073] class <=> module — Bráulio Bhavamitra <lists@...>

Hello all,

17 messages 2013/07/23

[#409104] Ruby newbie question on Methods (NoMethoderror) — "Crispian A." <lists@...>

I have recently started learning ruby and so I am writing a small little

10 messages 2013/07/25

[#409170] Working through Ch.10 for learning to program 2.0 (Chris Pine) — JD JD <lists@...>

So, I have been working through this book, and have been doing ok up

33 messages 2013/07/28
[#409195] Re: Working through Ch.10 for learning to program 2.0 (Chris Pine) — Harry Kakueki <list.push@...> 2013/07/29

I tried this and came up with a one-liner that seems to do it. It sorts the

[#409258] WATIR - ScriptError popup on IE - Unable to get rid of! — Graeme Halls <lists@...>

I am new to Ruby & Watir, and I am having a nightmare with IE and Script

11 messages 2013/07/31

Re: Working through Ch.10 for learning to program 2.0 (Chris Pine)

From: Jes俍 Gabriel y Gal疣 <jgabrielygalan@...>
Date: 2013-07-31 07:07:21 UTC
List: ruby-talk #409254
On Wed, Jul 31, 2013 at 5:00 AM, JD KF <lists@ruby-forum.com> wrote:
> So, I am just taking a detour away from the book for a bit and trying
> something else and will go back to it.  I glanced at the solution for
> one you all wrote out.  The book didn't really go over a lot of what you
> all are doing.
>
> When I go back to the book, I'm going to attempt to do it without
> recursion and then with recursion.  However, I am really curious if
> someone could give me a semi hint on how to do it without recursion
> based off my card swap example.
>
> My guess is it would involve a while loop that does a swap something
> like this:
>
> if a>b
> X++
> Y++
> elsif a==b
> check next letter and compare
> else
> swap a and b

Let me explain a little bit what I did, expanding the one liner. I
started with your description of the select sort algorithm:

> So, here is how to do it with cards.  Basically, you look at the first
> card and compare it with the second.  If its smaller, you compare it to
> the next one, etc. etc. until you either find a smaller card or you
> don't.  If you do find a smaller card, you swap the cards.  If you
> don't, you leave them.
> Then you move on to the second card and do the same thing.  You do this
> until you get to the last card (which should be the biggest at this
> point).


So, there's a loop from the first to the last. In each step of the
loop I look for the smaller value from the remaining. I do it with
min, but in your explanation you do it comparing each two elements. If
the smallest is smaller than the value you are looking at, you swap
them. Then you continue with the loop:

p a.each_with_index {|e,i| (x = a[i..-1].find_index(a[i..-1].min)) &&
((a[i],a[i+x]=a[i+x],a[i]) if a[i+x] <= e) }

Expanding it:

a.each_with_index do |current, i|
  # find the min from the rest of the array
  min = a[1..-1].min # this could be replaced by another loop over
a[1..-1] with a temporary variable holding the smallest seen, and
another with the index where that is
  min_index = a[1..-1].find_index(min) # the index relative to the
rest of the array

  # if min is smaller than the one we are looking at (i) we swap them
  if min < e
    a[i],a[i+x]=a[i+x],a[i]
  end
end
# print it
p a

Hope this helps,

Jesus.

In This Thread