title: Ruby Run-length encoding fail
body: <p>I'm a newbie training at codewars and I can't find where my mistake is in this RLE problem , here are the instructions:</p>
  
  <p><em>Your task is to write such a run-length encoding. For a given string, return a list (or array) of pairs (or arrays) [ (i1, s1), (i2, s2), …, (in, sn) ], such that one can reconstruct the original string by replicating the character sx ix times and concatening all those strings. Your run-length encoding should be minimal, ie. for all i the values si and si+1 should differ.</em></p>
  
  <p>Examples</p>
  
  <pre><code>&gt;rle("hello world!")
  # =&gt; [[1,'h'],[1,'e'],[2,'l'],[1,'o'],[1,' '],[1,'w'],[1,'o'],[1,'r'],[1,'l'],[1,'d'],[1,'!']]
  
  &gt;rle("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb")
  # =&gt; [[34,'a'], [3,'b']]
  </code></pre>
  
  <p>And here is my code:</p>
  
  <pre><code>def rle(str)
    result=[[]]
    str.to_s.split.each do |word| #"Hello World"-&gt;["Hello","World!"]--&gt;"Hello", "World!"
      new_word_count=[[]]
      word.each_char do |char| #"H","e","l"...
        new_char=true
        new_word_count.map! do |find|
          if find[1]==char
          find[0]+=1
          new_char=false
          break
          end
        end
        if new_char==true
          new_word_count&lt;&lt;[1,'char']
        end
      end
      result+=new_word_count
    end
    result
  end
  </code></pre>
  
  <p>I get this error:</p>
  
  <pre><code>`block (3 levels) in rle': undefined method `[]' for nil:NilClass (NoMethodError)
  from `map!'
  from  `block (2 levels) in rle'
  from  `each_char'
  from  `block in rle'
  from  `each'
  from  `rle'
  from  `
  '
  </code></pre>
  
  <blockquote>
    <p>Run-length encoding (RLE) is a very simple form of data compression in
    which runs of data (that is, sequences in which the same data value
    occurs in many consecutive data elements) are stored as a single data
    value and count, rather than as the original run. Wikipedia</p>
  </blockquote>