The 08/03/12, simpleton wrote:
I have:

array = ["this ends in log", "this ends in dog", "this is a log"]

I want to discard strings that end in the same word. How far off is my attempt?

array.reject { |i| i[0] =~ /\s\w$/ == i[1] =~ /\s\w$/ }
Three things come to my mind:


Iterator i will take array elements as value:

i = "this ends in log"
i = "this ends in dog"
i = "this is a log"

So, you can work on variable i directly in the block.


In your block, you must iterate the whole array instead of comparing
only adjacent elements of the array.
Of course, iterating the "whole array" is not optimised at all but it
will run fine while the current implementation is buggy.


Once a "last word" from string becomes uniq, you aren't going to delete
the last uniq element.

You need more advanced stuff than a simple comparison expression in the
Also, you might need another array declared before the block where to
store the duplicated "last word" in order to know that the last uniq
"last word" was in fact a duplicated "last word".

A simpler approach would be to:
- first iterate the array to detect duplicated "last word" and store
them (or their index) in another_array;
- iterate the array again and remove known elements included in another_array.

Nicolas Sebrecht

You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to
To unsubscribe from this group, send email to
For more options, visit this group at

Search Discussions

Discussion Posts


Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 2 of 2 | next ›
Discussion Overview
grouprubyonrails-talk @
postedMar 8, '12 at 5:57p
activeMar 9, '12 at 3:32p

2 users in discussion

Simpleton: 1 post Nicolas Sebrecht: 1 post



site design / logo © 2022 Grokbase