F=-> str, match_char {
y = str.chars.chunk{|x|x}.map{|char, arr|
l = arr.size
case
when char != match_char
0
when l == 1
1
when l % 3 == 0 && l % 5 == 0
1
when l % 3 == 0 || l % 5 == 0
-1
else
0
end
}
y.reduce(0, :+)
}
require 'minitest/autorun'
describe F do
def test_cases
assert_equal 1, F['a', 'a']
assert_equal -1, F['aaa', 'a']
assert_equal -1, F['aaaaa', 'a']
assert_equal 1, F['aaaaaaaaaaaaaaa', 'a']
assert_equal 0, F['aa', 'a']
assert_equal 2, F['aba', 'a']
assert_equal 1, F['aaba', 'a']
assert_equal 0, F['aaaba', 'a']
assert_equal -1, F['aaaaaa', 'a']
end
end
CkY9LT4gc3RyLCBtYXRjaF9jaGFyIHsKICB5ID0gc3RyLmNoYXJzLmNodW5re3x4fHh9Lm1hcHt8Y2hhciwgYXJyfAogICAgbCA9IGFyci5zaXplCiAgICBjYXNlCiAgICB3aGVuIGNoYXIgIT0gbWF0Y2hfY2hhcgogICAgICAwCiAgICB3aGVuIGwgPT0gMQogICAgICAxCiAgICB3aGVuIGwgJSAzID09IDAgJiYgbCAlIDUgPT0gMAogICAgICAxCiAgICB3aGVuIGwgJSAzID09IDAgfHwgbCAlIDUgPT0gMAogICAgICAtMQogICAgZWxzZQogICAgICAwCiAgICBlbmQKICB9CgogIHkucmVkdWNlKDAsIDorKQp9CgpyZXF1aXJlICdtaW5pdGVzdC9hdXRvcnVuJwoKZGVzY3JpYmUgRiBkbwogIGRlZiB0ZXN0X2Nhc2VzCiAgICBhc3NlcnRfZXF1YWwgMSwgRlsnYScsICdhJ10KICAgIGFzc2VydF9lcXVhbCAtMSwgRlsnYWFhJywgJ2EnXQogICAgYXNzZXJ0X2VxdWFsIC0xLCBGWydhYWFhYScsICdhJ10KICAgIGFzc2VydF9lcXVhbCAxLCBGWydhYWFhYWFhYWFhYWFhYWEnLCAnYSddCiAgICBhc3NlcnRfZXF1YWwgMCwgRlsnYWEnLCAnYSddCgogICAgYXNzZXJ0X2VxdWFsIDIsIEZbJ2FiYScsICdhJ10KICAgIGFzc2VydF9lcXVhbCAxLCBGWydhYWJhJywgJ2EnXQogICAgYXNzZXJ0X2VxdWFsIDAsIEZbJ2FhYWJhJywgJ2EnXQogICAgYXNzZXJ0X2VxdWFsIC0xLCBGWydhYWFhYWEnLCAnYSddCiAgZW5kCmVuZAo=