31 lines
582 B
Ruby
Executable File
31 lines
582 B
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
VOWELS = %[a e i o u].freeze
|
|
|
|
def vowel_count(input)
|
|
input.each_char.sum do |char|
|
|
VOWELS.include?(char) ? 1 : 0
|
|
end
|
|
end
|
|
|
|
def twin_letters(input)
|
|
input.each_char.each_cons(2).sum do |(char, next_char)|
|
|
char == next_char ? 1 : 0
|
|
end
|
|
end
|
|
|
|
def is_nice?(input)
|
|
return false if input.empty?
|
|
return false if input.match?(/ab|cd|pq|xy/)
|
|
return false unless vowel_count(input) >= 3
|
|
return false unless twin_letters(input) >= 1
|
|
|
|
true
|
|
end
|
|
|
|
result = File.readlines(ARGV.first, chomp: true).sum do |line|
|
|
is_nice?(line) ? 1 : 0
|
|
end
|
|
|
|
puts result
|