30 lines
685 B
Ruby
30 lines
685 B
Ruby
numbers = ARGV.map(&:to_i)
|
|
if numbers.length == 0
|
|
puts
|
|
puts("usage: #{File.basename(__FILE__)} number...")
|
|
exit
|
|
end
|
|
|
|
def maya_print(number)
|
|
digits5s1s = number.to_s(20).chars.map { |ch| ch.to_i(20) }.map { |dig| dig.divmod(5) }
|
|
puts(('+----' * digits5s1s.length) + '+')
|
|
3.downto(0) do |row|
|
|
digits5s1s.each do |d5s1s|
|
|
if row < d5s1s[0]
|
|
print('|----')
|
|
elsif row == d5s1s[0]
|
|
print("|#{[(d5s1s[0] == 0 ? ' @ ' : ' '), ' . ', ' .. ', '... ', '....'][d5s1s[1]]}")
|
|
else
|
|
print('| ')
|
|
end
|
|
end
|
|
puts('|')
|
|
end
|
|
puts(('+----' * digits5s1s.length) + '+')
|
|
end
|
|
|
|
numbers.each do |num|
|
|
puts(num)
|
|
maya_print(num)
|
|
end
|