Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 24 additions & 11 deletions Training/Easy/ascii_art.rb
Original file line number Diff line number Diff line change
@@ -1,28 +1,41 @@
# Solution for https://www.codingame.com/ide/puzzle/ascii-art
class AsciiArt
attr_accessor :ascii_style, :letter_width, :letter_height, :word, :lines
attr_accessor :ascii_style, :letter_width, :letter_height, :word

def initialize
@ascii_style = ('A'..'Z').to_a << '?'
@letter_width = gets.to_i
@letter_height = gets.to_i
@word = gets.chomp
end

def letter_index(letter)
index = ascii_style.find_index(letter.upcase)
index ? index : ascii_style.size - 1
end

def start
letter_height.times do
Array.new(letter_height) do
row = gets.chomp
splitted_row = row.scan(/.{#{letter_width}}|./)
line = word.chars.map { |letter| splitted_row[letter_index(letter)] }.join
puts line
word.chars.map { |char| AsciiArt::Letter.new(splitted_row, char).in_ascii }.join
end
end

# Represent letter
class Letter
attr_accessor :row, :char
LETTERS = ('A'..'Z').to_a << '?'

def initialize(row, char)
@row = row
@char = char
end

def letter_index(letter)
index = LETTERS.find_index(letter.upcase)
index ? index : LETTERS.size - 1
end

def in_ascii
row[letter_index(char)]
end
end
end

obj = AsciiArt.new
obj.start
puts obj.start.join("\n")