A solution in Ruby to the Practice Challenge in the inaugural Codehire Cup held in September 2012 at the University of Adelaide.
In September 2012, Codehire held the inaugural Codehire Cup in Adelaide, featuring some relatively simple coding problems. Contestants could choose to use C#, Java, JavaScript, PHP, or Ruby to submit solutions through a web-based interface. Fastest contestant wins.
The Problem
The Practice Challenge read:
Given an input string (of no more than 300 characters in length), parse the string and count the occurrences of vowels and consonants. The data should be output in the format below (ie; JSON). Punctuation, numbers and any other characters should be ignored.
{vowels:<count>,consonants:<count>}eg:
{vowels:10,consonants:9}
The Solution
The simplest solution is to use the built-in Ruby count
method to count the vowels and consonants:
str = input.downcase
num_vowels = str.count "aeiou"
num_consonants = str.count "bcdfghjklmnpqrstvwxyz"
output << "{vowels:#{num_vowels},consonants:#{num_consonants}}"
Another Solution
It became somewhat of a contest to see who could squeeze a solution to this problem into the fewest number of characters. Bearing in mind that the input string may contain characters that are neither vowels nor consonants (such as whitespace or punctuation), my solution in 93 characters is set out below:
output<<"{vowels:#{v=input.scan(/[aeiou]/i).size},consonants:#{input.scan(/[a-z]/i).size-v}}"
More Codehire Cup Solutions
- Practice Challenge Solution
- Codehire Cup Preliminary Solution
- Cup Semi-final Solution
- Grand Final Solution