[QUIZ] Big Words (#204)

D

Daniel Moore

[Note: parts of this message were removed to make it a legal post.]

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

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!
 
M

Matthias Reitinger

Daniel said:
## 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
 
D

Daniel Moore

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,073
Latest member
DarinCeden

Latest Threads

Top