Skip to content

Instantly share code, notes, and snippets.

@jof
Created January 20, 2014 22:51
Show Gist options
  • Save jof/8530994 to your computer and use it in GitHub Desktop.
Save jof/8530994 to your computer and use it in GitHub Desktop.
Totally awesome/useless LCD number maker.
class LCDMaker
def initialize(size)
@size=size
end
def h_bar
a = []
a << ' '
a << ('-' * @size)
a << ' '
end
def empty
a = []
a << ' '
a << (' ' * @size)
a << ' '
end
def v_double
a = []
a << '|'
a << (' ' * @size)
a << '|'
end
def v_left
a = []
a << '|'
a << (' ' * @size)
a << ' '
end
def v_right
a = []
a << ' '
a << (' ' * @size)
a << '|'
end
def generate_number(top, top_box, middle, bottom_box, bottom)
a = []
a << self.send(top)
@size.times { a << self.send(top_box) }
a << self.send(middle)
@size.times { a << self.send(bottom_box) }
a << self.send(bottom)
end
def generate_n(n)
case n
when 1
generate_number :empty, :v_right, :empty, :v_right, :empty
when 2
generate_number :h_bar, :v_right, :h_bar, :v_left, :h_bar
when 3
generate_number :h_bar, :v_right, :h_bar, :v_right, :h_bar
when 4
generate_number :empty, :v_double, :h_bar, :v_right, :empty
when 5
generate_number :h_bar, :v_left, :h_bar, :v_right, :h_bar
when 6
generate_number :h_bar, :v_left, :h_bar, :v_double, :h_bar
when 7
generate_number :h_bar, :v_right, :empty, :v_right, :empty
when 8
generate_number :h_bar, :v_double, :h_bar, :v_double, :h_bar
when 9
generate_number :h_bar, :v_double, :h_bar, :v_right, :empty
when 0
generate_number :h_bar, :v_double, :empty, :v_double, :h_bar
else
raise ArgumentError
end
end
def format(number)
raise ArgumentError unless number.is_a?(Numeric)
character_arrays = number.to_s.split('').map { |n| generate_n(n.to_i) }
first_char = character_arrays.shift
char_matricies = first_char.zip(*character_arrays)
output = ''
char_matricies.each do |char_lines|
output << char_lines.map { |cl| cl.join }.join
output << "\n"
end
output
end
end
puts LCDMaker.new(ARGV.first.to_i).format(1234567890)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment