Created
September 15, 2023 16:13
-
-
Save lucaswinningham/dad654210905a7ebeb1c69456f3808dd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# https://www.ascii-code.com/ | |
# https://fontstruct.com/fontstructions/show/847768/5x7_dot_matrix | |
' | |
1 2 3 4 5 6 7 8 9 0 | |
a b c d e f g h i j k l m n o p q r s t u v w x y z | |
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | |
' | |
# 00 01 02 03 04 | |
# 05 06 07 08 09 | |
# 10 11 12 13 14 | |
# 15 16 17 18 19 | |
# 20 21 22 23 24 | |
# 25 26 27 28 29 | |
# 30 31 32 33 34 | |
zero = [] | |
module Display | |
class << self | |
def to_display(character) | |
set = SET_MAP[character] || SET_MAP['?'] | |
full_display = [] | |
ROWS.times.each do |row_number| | |
row_display = [] | |
start = row_number * COLUMNS | |
COLUMNS.times.to_a.each do |column_number| | |
position = start + column_number | |
row_display << (set.include?(position) ? ON : OFF) | |
end | |
full_display << row_display | |
end | |
full_display | |
end | |
def to_message_display(string) | |
string.chars.map(&method(:to_display)).transpose | |
end | |
def print(string) | |
print_string = to_message_display(string).map { |row_displays| | |
row_displays.map(&:join).join(' ') | |
}.join("\n") | |
puts print_string | |
end | |
end | |
ON = '•' | |
OFF = '·' | |
## 5x5 | |
# SET_MAP = { | |
# '0' => [1, 2, 3, 5, 8, 9, 10, 12, 14, 15, 16, 19, 21, 22, 23], | |
# '1' => [2, 6, 7, 12, 17, 21, 22, 23], | |
# '2' => [0, 1, 2, 3, 9, 11, 12, 13, 15, 20, 21, 22, 23, 24], | |
# '3' => [0, 1, 2, 3, 9, 11, 12, 13, 19, 20, 21, 22, 23], | |
# '4' => [0, 4, 5, 9, 10, 11, 12, 13, 14, 19, 24], | |
# '5' => [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 19, 20, 21, 22, 23], | |
# '6' => [1, 2, 3, 5, 10, 11, 12, 13, 15, 19, 21, 22, 23], | |
# '7' => [0, 1, 2, 3, 4, 9, 13, 14, 19, 24], | |
# '8' => [1, 2, 3, 5, 9, 11, 12, 13, 15, 19, 21, 22, 23], | |
# '9' => [1, 2, 3, 5, 9, 11, 12, 13, 14, 19, 21, 22, 23], | |
# 'a' => [11, 12, 13, 16, 18, 21, 22, 23, 24], | |
# 'b' => [1, 6, 11, 12, 13, 16, 18, 21, 22, 23], | |
# 'c' => [11, 12, 13, 16, 21, 22, 23], | |
# 'd' => [3, 8, 11, 12, 13, 16, 18, 21, 22, 23], | |
# 'e' => [11, 12, 13, 16, 21, 22, 23], | |
# } | |
ROWS = 7 | |
COLUMNS = 5 | |
SET_MAP = { | |
' ' => [], | |
'!' => [2, 7, 12, 17, 22, 32], | |
'"' => [1, 3, 6, 8], | |
'#' => [1, 3, 6, 8, 10, 11, 12, 13, 14, 16, 18, 20, 21, 22, 23, 24, 26, 28, 31, 33], | |
'$' => [2, 6, 7, 8, 9, 10, 12, 16, 17, 18, 22, 24, 25, 26, 27, 28, 32], | |
'%' => [0, 1, 5, 6, 9, 13, 17, 21, 25, 28, 29, 33, 34], | |
'&' => [1, 2, 5, 8, 10, 12, 16, 20, 22, 24, 25, 28, 31, 32, 34], | |
"'" => [2, 7], | |
'(' => [3, 7, 11, 16, 21, 27, 33], | |
')' => [1, 7, 13, 18, 23, 27, 31], | |
'*' => [7, 10, 12, 14, 16, 17, 18, 20, 22, 24, 27], | |
'+' => [7, 12, 15, 16, 17, 18, 19, 22, 27], | |
',' => [21, 22, 27, 31], | |
'-' => [15, 16, 17, 18, 19], | |
'.' => [26, 27, 31, 32], | |
'/' => [9, 13, 17, 21, 25], | |
'0' => [1, 2, 3, 5, 9, 10, 13, 14, 15, 17, 19, 20, 21, 24, 25, 29, 31, 32, 33], | |
'1' => [2, 6, 7, 12, 17, 22, 27, 31, 32, 33], | |
'2' => [1, 2, 3, 5, 9, 14, 17, 18, 21, 25, 30, 31, 32, 33, 34], | |
'3' => [1, 2, 3, 5, 9, 14, 17, 18, 24, 25, 29, 31, 32, 33], | |
'4' => [3, 7, 8, 11, 13, 15, 18, 20, 21, 22, 23, 24, 28, 33], | |
'5' => [0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 19, 24, 25, 29, 31, 32, 33], | |
'6' => [2, 3, 6, 10, 15, 16, 17, 18, 20, 24, 25, 29, 31, 32, 33], | |
'7' => [0, 1, 2, 3, 4, 9, 13, 17, 21, 26, 31], | |
'8' => [1, 2, 3, 5, 9, 10, 14, 16, 17, 18, 20, 24, 25, 29, 31, 32, 33], | |
'9' => [1, 2, 3, 5, 9, 10, 14, 16, 17, 18, 19, 24, 28, 31, 32], | |
':' => [6, 7, 11, 12, 21, 22, 26, 27], | |
';' => [6, 7, 11, 12, 21, 22, 27, 31], | |
'<' => [3, 7, 11, 15, 21, 27, 33], | |
'=' => [10, 11, 12, 13, 14, 20, 21, 22, 23, 24], | |
'>' => [1, 7, 13, 19, 23, 27, 31], | |
'?' => [1, 2, 3, 5, 9, 14, 18, 22, 32], | |
'@' => [1, 2, 3, 5, 9, 14, 16, 17, 19, 20, 22, 24, 25, 27, 29, 31, 32, 33], | |
'A' => [2, 6, 8, 10, 14, 15, 19, 20, 21, 22, 23, 24, 30, 34], | |
'B' => [0, 1, 2, 3, 5, 9, 10, 14, 15, 16, 17, 18, 20, 24, 25, 29, 30, 31, 32, 33], | |
'C' => [1, 2, 3, 5, 9, 10, 15, 20, 25, 29, 31, 32, 33], | |
'D' => [0, 1, 2, 3, 5, 9, 10, 14, 15, 19, 20, 24, 25, 29, 30, 31, 32, 33], | |
'E' => [0, 1, 2, 3, 4, 5, 10, 15, 16, 17, 18, 20, 25, 30, 31, 32, 33, 34], | |
'F' => [0, 1, 2, 3, 4, 5, 10, 15, 16, 17, 18, 20, 25, 30], | |
'G' => [1, 2, 3, 5, 9, 10, 15, 18, 19, 20, 24, 25, 29, 31, 32, 33, 34], | |
'H' => [0, 4, 5, 9, 10, 14, 15, 16, 17, 18, 19, 20, 24, 25, 29, 30, 34], | |
'I' => [1, 2, 3, 7, 12, 17, 22, 27, 31, 32, 33], | |
'J' => [1, 2, 3, 4, 8, 13, 18, 23, 25, 28, 31, 32], | |
'K' => [0, 4, 5, 8, 10, 12, 15, 16, 20, 22, 25, 28, 30, 34], | |
'L' => [0, 5, 10, 15, 20, 25, 30, 31, 32, 33, 34], | |
'M' => [0, 4, 5, 6, 8, 9, 10, 12, 14, 15, 17, 19, 20, 24, 25, 29, 30, 34], | |
'N' => [0, 4, 5, 9, 10, 11, 14, 15, 17, 19, 20, 23, 24, 25, 29, 30, 34], | |
'O' => [1, 2, 3, 5, 9, 10, 14, 15, 19, 20, 24, 25, 29, 31, 32, 33], | |
'P' => [0, 1, 2, 3, 5, 9, 10, 14, 15, 16, 17, 18, 20, 25, 30], | |
'Q' => [1, 2, 3, 5, 9, 10, 14, 15, 19, 20, 22, 24, 25, 28, 31, 32, 34], | |
'R' => [0, 1, 2, 3, 5, 9, 10, 14, 15, 16, 17, 18, 20, 22, 25, 28, 30, 34], | |
'S' => [1, 2, 3, 5, 9, 10, 16, 17, 18, 24, 25, 29, 31, 32, 33], | |
'T' => [0, 1, 2, 3, 4, 7, 12, 17, 22, 27, 32], | |
'U' => [0, 4, 5, 9, 10, 14, 15, 19, 20, 24, 25, 29, 31, 32, 33], | |
'V' => [0, 4, 5, 9, 10, 14, 15, 19, 20, 24, 26, 28, 32], | |
'W' => [0, 4, 5, 9, 10, 14, 15, 17, 19, 20, 22, 24, 25, 27, 29, 31, 33], | |
'X' => [0, 4, 5, 9, 11, 13, 17, 21, 23, 25, 29, 30, 34], | |
'Y' => [0, 4, 5, 9, 10, 14, 16, 18, 22, 27, 32], | |
'Z' => [0, 1, 2, 3, 4, 9, 13, 17, 21, 25, 30, 31, 32, 33, 34], | |
'[' => [1, 2, 3, 6, 11, 16, 21, 26, 31, 32, 33], | |
'\\' => [5, 11, 17, 23, 29], | |
']' => [1, 2, 3, 8, 13, 18, 23, 28, 31, 32, 33], | |
'^' => [2, 6, 8, 10, 14], | |
'_' => [30, 31, 32, 33, 34], | |
'`' => [1, 7, 13], | |
'a' => [11, 12, 13, 19, 21, 22, 23, 24, 25, 29, 31, 32, 33, 34], | |
'b' => [0, 5, 10, 11, 12, 13, 15, 19, 20, 24, 25, 29, 30, 31, 32, 33], | |
'c' => [11, 12, 13, 14, 15, 20, 25, 31, 32, 33, 34], | |
'd' => [4, 9, 11, 12, 13, 14, 15, 19, 20, 24, 25, 29, 31, 32, 33, 34], | |
'e' => [11, 12, 13, 15, 19, 20, 21, 22, 23, 24, 25, 31, 32, 33], | |
'f' => [2, 3, 6, 9, 11, 15, 16, 17, 21, 26, 31], | |
'g' => [11, 12, 13, 14, 15, 19, 21, 22, 23, 24, 29, 31, 32, 33], | |
'h' => [0, 5, 10, 12, 13, 15, 16, 19, 20, 24, 25, 29, 30, 34], | |
'i' => [2, 12, 16, 17, 22, 27, 31, 32, 33], | |
'j' => [3, 12, 13, 18, 23, 25, 28, 31, 32], | |
'k' => [0, 5, 10, 13, 15, 17, 20, 21, 25, 27, 30, 33], | |
'l' => [1, 2, 7, 12, 17, 22, 27, 31, 32, 33], | |
'm' => [10, 11, 13, 15, 17, 19, 20, 22, 24, 25, 27, 29, 30, 32, 34], | |
'n' => [10, 12, 13, 15, 16, 19, 20, 24, 25, 29, 30, 34], | |
'o' => [11, 12, 13, 15, 19, 20, 24, 25, 29, 31, 32, 33], | |
'p' => [10, 11, 12, 13, 15, 19, 20, 21, 22, 23, 25, 30], | |
'q' => [11, 12, 13, 14, 15, 19, 21, 22, 23, 24, 29, 34], | |
'r' => [10, 12, 13, 15, 16, 19, 20, 25, 30], | |
's' => [11, 12, 13, 15, 21, 22, 23, 29, 31, 32, 33], | |
't' => [2, 7, 11, 12, 13, 17, 22, 27, 32], | |
'u' => [10, 14, 15, 19, 20, 24, 25, 29, 31, 32, 33], | |
'v' => [10, 14, 15, 19, 20, 24, 26, 28, 32], | |
'w' => [10, 14, 15, 19, 20, 22, 24, 25, 27, 29, 31, 33], | |
'x' => [10, 14, 16, 18, 22, 26, 28, 30, 34], | |
'y' => [10, 14, 15, 19, 21, 22, 23, 24, 29, 31, 32, 33], | |
'z' => [10, 11, 12, 13, 14, 18, 22, 26, 30, 31, 32, 33, 34], | |
'{' => [3, 7, 12, 16, 22, 27, 33], | |
'|' => [2, 7, 12, 17, 22, 27, 32], | |
'}' => [1, 7, 12, 18, 22, 27, 31], | |
'~' => [16, 17, 19, 20, 23], | |
} | |
end | |
Display.print(('0'..'9').to_a.join) | |
puts | |
Display.print(('a'..'z').to_a.join) | |
puts | |
Display.print(('A'..'Z').to_a.join) | |
puts | |
Display.print(' !"#$%&\'()*+,-./') | |
puts | |
Display.print(':;<=>?@[\\]^_`{|}~') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment