Forum: Ruby Big Words (#204)

33117162fff8a9cf50544a604f60c045?d=identicon&s=25 Daniel X Moore (yahivin)
on 2009-05-08 19:21
(Received via mailing list)
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

The three rules of Ruby Quiz:

1.  Please do not post any solutions or spoiler discussion for this
quiz until 48 hours have elapsed from the time this message was
sent.

2.  Support Ruby Quiz by submitting ideas and responses
as often as you can!
Visit: <http://rubyquiz.strd6.com/suggestions>

3.  Enjoy!

Suggestion:  A [QUIZ] in the subject of emails about the problem
helps everyone on Ruby Talk follow the discussion.  Please reply to
the original quiz message, if you can.

RSS Feed: http://rubyquiz.strd6.com/quizzes.rss

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

## Big Words (#204)

Wassup Rubyists,

This weeks quiz was submitted by Alan.

Write a method that will return a large version of a string you provide
it.

(Copy the output into a monospaced buffer for better viewing)

puts big_word('BIGWORD')
######  #######  #####  #     #  #####  ######  ######
#     #    #    #       #     # #     # #     # #     #
######     #    #   ### #  #  # #     # ######  #     #
#     #    #    #     # #  #  # #     # #    #  #     #
######  #######  #####   ## ##   #####  #     # ######


For extra credit you may include additional font styles, such as italic.

puts big_word('BIGWORD', 'i')
   ######  #######  #####  #     #  #####  ######  ######
  #     #    #    #       #     # #     # #     # #     #
 ######     #    #   ### #  #  # #     # ######  #     #
#     #    #    #     # #  #  # #     # #    #  #     #
######  #######  #####   ## ##   #####  #     # ######


Have Fun!
29194588628f0c08917c93d1b5793d3a?d=identicon&s=25 Matthias Reitinger (Guest)
on 2009-05-15 23:15
(Received via mailing list)
Daniel Moore wrote:
> ## Big Words (#204)

This quiz immediately reminded me of FIGlet[1].  A reimplementation of
FIGlet in Ruby seemed to be a sensible way to solve this quiz, taking
into account the hundreds of fonts already available in the FIGlet
format
(saving me from creating my own font).  Fortunately I wasn't the first
one to have that idea: the "Text" gem[2] includes a Ruby implementation
of FIGlet!  So I couldn't resist to do this:

  #!/usr/bin/env ruby
  require 'rubygems'
  require 'text'

  def big_word(str, fontfile='banner.flf')
    font = Text::Figlet::Font.new(fontfile)
    figlet = Text::Figlet::Typesetter.new(font)
    figlet[str]
  end

  if __FILE__ == $0
    while str = ARGV.shift
      puts big_word(str)
    end
  end

Sample run:

  reima@marvin:~/devel/ruby/quiz/204$ ./big_word.rb "Ruby Quiz"
   ######                          #####
   #     # #    # #####  #   #    #     # #    # # ######
   #     # #    # #    #  # #     #     # #    # #     #
   ######  #    # #####    #      #     # #    # #    #
   #   #   #    # #    #   #      #   # # #    # #   #
   #    #  #    # #    #   #      #    #  #    # #  #
   #     #  ####  #####    #       #### #  ####  # ######

The font file needed to run the script can be obtained from [3].  Or
pick
any font from the font database[4] you fancy and change the file name in
the script.

-Matthias

[1]: http://www.figlet.org/
[2]: http://text.rubyforge.org/
[3]: http://www.figlet.org/fonts/banner.flf
[4]: http://www.figlet.org/fontdb.cgi
33117162fff8a9cf50544a604f60c045?d=identicon&s=25 Daniel X Moore (yahivin)
on 2009-05-17 19:41
(Received via mailing list)
This week's quiz was solved by Matthias Reitinger. Let's check out the
solution:

    require 'rubygems'
    require 'text'

    def big_word(str, fontfile='banner.flf')
      font = Text::Figlet::Font.new(fontfile)
      figlet = Text::Figlet::Typesetter.new(font)
      figlet[str]
    end

Matthias uses the `Text` gem[1] to display fonts using the FIGlet[2]
format. The `big_word` method takes an optional font file parameter to
allow different styles. It operates by loading the file, creating a
FIGlet Typesetter from the font, and passing the input string to the
Typesetter. An easy to use and straightforward library.

There are a couple of prerequisites to use the program, though. You'll
need the `Text` gem and a font file[3]. I found that when installing
the gem, I needed to use the command `gem install Text`; the command
with lowercase `text` wouldn't work for me. Matthias also links to the
FIGlet font database[4] where there are some amazing fonts available.

In addition to FIGlet, the `Text` gem includes many other useful
libraries like Metaphone and Soundex. The Metaphone component of the
`Text` gem was used way back on Quiz #140[5] to sound out T-Shirts.

Thank you, Matthias, for sharing this useful library.

     ____            __                  _____
    /\  _`\         /\ \                /\  __`\          __
    \ \ \L\ \  __  __\ \ \____  __  __  \ \ \/\ \  __  __/\_\  ____
     \ \ ,  / /\ \/\ \ \ '__`\/\ \/\ \   \ \ \ \ \/\ \/\ \/\ \/\_ ,`\
      \ \ \\ \\ \ \_\ \ \ \L\ \ \ \_\ \   \ \ \\'\\ \ \_\ \ \ \/_/  /_
       \ \_\ \_\ \____/\ \_,__/\/`____ \   \ \___\_\ \____/\ \_\/\____\
        \/_/\/ /\/___/  \/___/  `/___/> \   \/__//_/\/___/  \/_/\/____/
                                   /\___/
                                   \/__/


[1]: http://text.rubyforge.org/
[2]: http://www.figlet.org/
[3]: http://www.figlet.org/fonts/banner.flf
[4]: http://www.figlet.org/fontdb.cgi
[5]: http://rubyquiz.com/quiz140.html
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.