A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
14
Task/Multisplit/Ruby/multisplit-1.rb
Normal file
14
Task/Multisplit/Ruby/multisplit-1.rb
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
text = 'a!===b=!=c'
|
||||
separators = ['==', '!=', '=']
|
||||
|
||||
def multisplit_simple(text, separators)
|
||||
sep_regex = Regexp.new(separators.collect {|sep| Regexp.escape(sep)}.join('|'))
|
||||
text.split(sep_regex)
|
||||
end
|
||||
|
||||
p multisplit_simple(text, separators)
|
||||
["a", "", "b", "", "c"]
|
||||
=> nil
|
||||
p multisplit_simple(text, ['=', '!=', '=='])
|
||||
["a", "", "", "b", "", "c"]
|
||||
=> nil
|
||||
18
Task/Multisplit/Ruby/multisplit-2.rb
Normal file
18
Task/Multisplit/Ruby/multisplit-2.rb
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
def multisplit(text, separators)
|
||||
sep_regex = Regexp.new(separators.collect {|sep| Regexp.escape(sep)}.join('|'))
|
||||
separator_info = []
|
||||
pieces = []
|
||||
i = prev = 0
|
||||
while i = text.index(sep_regex, i)
|
||||
separator = Regexp.last_match(0)
|
||||
pieces << text[prev .. i-1]
|
||||
separator_info << [separator, i]
|
||||
i = i + separator.length
|
||||
prev = i
|
||||
end
|
||||
pieces << text[prev .. -1]
|
||||
[pieces, separator_info]
|
||||
end
|
||||
|
||||
p multisplit(text, separators)
|
||||
# => [["a", "", "b", "", "c"], [["!=", 1], ["==", 3], ["=", 6], ["!=", 7]]]
|
||||
7
Task/Multisplit/Ruby/multisplit-3.rb
Normal file
7
Task/Multisplit/Ruby/multisplit-3.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
def multisplit_rejoin(info)
|
||||
str = info[0].zip(info[1])[0..-2].inject("") {|str, (piece, (sep, idx))| str << piece << sep}
|
||||
str << info[0].last
|
||||
end
|
||||
|
||||
p multisplit_rejoin(multisplit(text, separators)) == text
|
||||
# => true
|
||||
Loading…
Add table
Add a link
Reference in a new issue