[#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: sto.mar@...
Date: 2013-07-31 09:45:09 UTC
List: ruby-talk #409255
Am 31.07.2013 05:02, schrieb JD JD:
> 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.

Please do not take these one-liners as examples on how you should
write your code. I consider them more as riddles or katas than
as good solutions for a beginning programmer (or maybe even for
an expert programmer). They are cryptic and not too easy to
understand, and good "real" code should be neither.

Considering your pseudo code (I do not know how your real code looks
like, but just to make sure): beware of using one letter variable
names! The additional time for typing is only spent once, but
cryptic code causes extra time spent every time you need to re-read
through it when searching for bugs, etc.

> Marcus, it sounds like you read the same book.  Could you maybe give me
> a hint based off what I should know from the book?  It looks like many
> people here are using things that weren't taught in the book.  Not
> saying they are wrong, but it not something I probably know from what I
> read in the book.  I might be wrong though.  I'm still learning either
> way.

Matthew gave very good advice. Think in small steps, write them down,
break them up even more. I would like to add that IMO the selection
sort algorithm I described earlier is even a bit simpler than
insertion sort (of course, it's partially a matter of taste).
The biggest subtask there is to find the smallest element of the
array and its index.

I'll give an example implementation below, you can ignore it for
the time being, or have a peak and then try on your own, whatever.
It uses only the most basic array operations (like accessing,
pushing or deleting elements).
There is another versions that uses Array#min (which could be
considered cheating, but it's an exercise and you make the rules).
It might help further in understanding how the algorithm works.

BTW. Don't be discouraged by chapter 10. Not without reason
Chris Pine calls it a "rite of passage". And: you know that
the appendix has suggestions for possible solutions, often
more than one?

Regards,
Marcus


Without Array#min (the biggest block is only for finding
of the smallest value):

  unsorted = [8, 4, 0, 9, 2, 6, 5, 9, 2, 7]
  sorted = []

  while unsorted.size > 0 do  # more rubyish: until unsorted.empty? do
    smallest = unsorted[0]
    index_of_smallest = 0

    1.upto(unsorted.size - 1) do |index| # more rubyish: each_with_index
      if unsorted[index] < smallest
        smallest = unsorted[index]
        index_of_smallest = index
      end
    end

    sorted << smallest
    unsorted.delete_at(index_of_smallest)
  end

  p sorted  # => [0, 2, 2, 4, 5, 6, 7, 8, 9, 9]


The same using Array#min:

  unsorted = [8, 4, 0, 9, 2, 6, 5, 9, 2, 7]
  sorted = []

  while unsorted.size > 0 do
    smallest = unsorted.min
    index_of_smallest = unsorted.index(smallest)

    sorted << smallest
    unsorted.delete_at(index_of_smallest)
  end

  p sorted


-- 
GitHub: https://github.com/stomar/
PGP:    0x6B3A101A

In This Thread