Hello,
I have a algorithm problem and I’m trying to resolve it
Here is an array s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
I want to combine them with some rules

s[i].size > s[i+1].size
combine them
2.
s[i+1].size > s[i].size
combine them
3.
s[i].size + s[i+1].size
The upper result is
{“aaab”}
{“bc”}
{“bcd”}
{“cd”}
{“dee”}
{“eef”}
Thanks for any help
Richard
Richard Zenn wrote:
Here is an array s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
I want to combine them with some rules

s[i].size > s[i+1].size
combine them
2.
s[i+1].size > s[i].size
combine them
3.
s[i].size + s[i+1].size
The upper result is
{“aaab”}
{“bc”}
{“bcd”}
{“cd”}
{“dee”}
{“eef”}
In the first place, it seems that rules 1 and 2 combine to just say that
they should not be equal in size.
In the second place, if I read the rules correctly, they say that the
result you want is not correct.
Note: I am assuming that rule 3 is not a rule as much as it is an
example of how they should be combined.
s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
arr = Array.new
0.upto(s.length  2) { i
arr << s[i] + s[i+1] unless s[i].size == s[i+1].size
}
p arr
=> [“aaab”, “dee”, “eef”]
“b”, “c”, “d” are all the same size and would be excluded by the rules.
Could you clarify? I must be missing something.
Wow!it helps a lot
“b”, “c”, “d” is “one” character
they combine in order
array s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
the rule 3 result will be “bc” “cd” “bcd”
Thanks for your help:)
Lloyd L. wrote:
Richard Zenn wrote:
Here is an array s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
I want to combine them with some rules

s[i].size > s[i+1].size
combine them
2.
s[i+1].size > s[i].size
combine them
3.
s[i].size + s[i+1].size
The upper result is
{“aaab”}
{“bc”}
{“bcd”}
{“cd”}
{“dee”}
{“eef”}
In the first place, it seems that rules 1 and 2 combine to just say that
they should not be equal in size.
In the second place, if I read the rules correctly, they say that the
result you want is not correct.
Note: I am assuming that rule 3 is not a rule as much as it is an
example of how they should be combined.
s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
arr = Array.new
0.upto(s.length  2) { i
arr << s[i] + s[i+1] unless s[i].size == s[i+1].size
}
p arr
=> [“aaab”, “dee”, “eef”]
“b”, “c”, “d” are all the same size and would be excluded by the rules.
Could you clarify? I must be missing something.
From: Richard Zenn [mailto:[email protected]]
Here is an array s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
I want to combine them with some rules
1.
s[i].size > s[i+1].size
combine them
2.
s[i+1].size > s[i].size
combine them
rules 1 & 2 simply says that if they differ in size, combine them, no?
3.
s[i].size + s[i+1].size
where is the condition here?
add the sizes?? it does not show in your output below
The upper result is
{“aaab”}
{“bc”}
{“bcd”}
{“cd”}
{“dee”}
{“eef”}
hmmm, it seems that you are combining them regardless… ??
here is a simplistic code (judging only fr your output)
[email protected]:~$ cat test.rb
s = [“aaa”, “b”, “c”, “d”, “ee”, “f”]
t = []
(1…s.size2).each do i
t << s[i1] + s[i]
if s[i].size == s[i1].size and s[i].size ==s[i+1].size
t << s[i1]+s[i]+s[i+1]
end
t << s[i] + s[i+1]
end
p t.uniq
[email protected]:~$ ruby test.rb
[“aaab”, “bc”, “bcd”, “cd”, “dee”, “eef”]
i hope that is ok to startup your ruby interest.
next time, pls show your initial/tried code, no matter how wrong it is
you think. help us help you, ie.
kind regards botp