 # String Combine problem

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”

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]]

# combine them

rules 1 & 2 simply says that if they differ in size, combine them, no?

# s[i].size + s[i+1].size

where is the condition here?

# {“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.size-2).each do |i|
t << s[i-1] + s[i]
if s[i].size == s[i-1].size and s[i].size ==s[i+1].size
t << s[i-1]+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