# Fwd: Ruby Quiz Submission

**URL:** <https://www.ruby-forum.com/t/fwd-ruby-quiz-submission/114160>\
**Category:** Ruby\
**Created:** [September 8, 2007, 9:02pm UTC](https://www.ruby-forum.com/t/fwd-ruby-quiz-submission/114160 "2007-09-08T21:02:46Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![bbazzarrakk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bbazzarrakk](https://www.ruby-forum.com/u/bbazzarrakk)\
**Post date:** [September 8, 2007, 9:02pm UTC](https://www.ruby-forum.com/t/fwd-ruby-quiz-submission/114160/1 "2007-09-08T21:02:46Z")

</div>

Begin forwarded message:

---

<div class="post-metadata">

**Author:** ![bbazzarrakk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/47e85d/32.png) [@bbazzarrakk](https://www.ruby-forum.com/u/bbazzarrakk)\
**Post date:** [September 12, 2007, 8:08pm UTC](https://www.ruby-forum.com/t/fwd-ruby-quiz-submission/114160/2 "2007-09-12T20:08:53Z")

</div>

On Sep 8, 2007, at 1:59 PM, James Edward G. II wrote:

> Begin forwarded message:
> 
> > # I would appreciate any
> > 
> > # comments improving my idiomatic ruby.

Some thoughts…

> > letters = {}  
> > letters.default = 0

That could be:

letters = Hash.new(0)

> > #put letters in a hash  
> > s = sentence.gsub(/[^A-Z]/,’’)  
> > s.split(’’).each do |letter|  
> > letters[letter] = letters[letter] + 1  
> > end

Instead of gsub() and split(), you could use scan(). You can take  
another shortcut here with +=:

sentence.scan(/[A-Z]/) { |l| letters[l] += 1 }

> > print i.to\_s + “.”

We generally favor interpolation in Ruby so we can avoid these  
casting calls:

print “#{i}.”

Great solution though. Thanks for sending it in.

James Edward G. II
