fork download
  1.  
  2. F=-> str, match_char {
  3. y = str.chars.chunk{|x|x}.map{|char, arr|
  4. l = arr.size
  5. case
  6. when char != match_char
  7. 0
  8. when l == 1
  9. 1
  10. when l % 3 == 0 && l % 5 == 0
  11. 1
  12. when l % 3 == 0 || l % 5 == 0
  13. -1
  14. else
  15. 0
  16. end
  17. }
  18.  
  19. y.reduce(0, :+)
  20. }
  21.  
  22. require 'minitest/autorun'
  23.  
  24. describe F do
  25. def test_cases
  26. assert_equal 1, F['a', 'a']
  27. assert_equal -1, F['aaa', 'a']
  28. assert_equal -1, F['aaaaa', 'a']
  29. assert_equal 1, F['aaaaaaaaaaaaaaa', 'a']
  30. assert_equal 0, F['aa', 'a']
  31.  
  32. assert_equal 2, F['aba', 'a']
  33. assert_equal 1, F['aaba', 'a']
  34. assert_equal 0, F['aaaba', 'a']
  35. assert_equal -1, F['aaaaaa', 'a']
  36. end
  37. end
  38.  
Success #stdin #stdout 0.09s 10744KB
stdin
Standard input is empty
stdout
Run options: --seed 26471

# Running tests:

.

Finished tests in 0.001092s, 915.6335 tests/s, 8240.7017 assertions/s.

1 tests, 9 assertions, 0 failures, 0 errors, 0 skips