From 06fbf3c3df3d49499a951a66fbb1e1fc575b073d Mon Sep 17 00:00:00 2001 From: Slavunderkind Date: Wed, 11 Jan 2017 18:01:44 +0200 Subject: [PATCH 1/3] Update mime type solution --- Training/Easy/mime_type.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Training/Easy/mime_type.rb b/Training/Easy/mime_type.rb index a5167fb..0948156 100644 --- a/Training/Easy/mime_type.rb +++ b/Training/Easy/mime_type.rb @@ -17,16 +17,19 @@ def init_associations associations end + def match_file(filename) + splitted_fname = filename.split('.') + result = 'UNKNOWN' + if splitted_fname.size > 1 && filename[-1] != '.' + result = associations.fetch(splitted_fname.last.downcase, 'UNKNOWN') + end + result + end + def start q.times do fname = gets.chomp # One file name per line. - splitted_fname = fname.split('.') - result = nil - if splitted_fname.size > 1 && fname[-1] != '.' - result = associations.fetch(splitted_fname.last.downcase, 'UNKNOWN') - end - result = 'UNKNOWN' if result.nil? - puts result + puts match_file(fname) end end end From 17b7168d0f6c9f4b8115acea6f1d962f208bc655 Mon Sep 17 00:00:00 2001 From: Slavunderkind Date: Thu, 12 Jan 2017 17:11:31 +0200 Subject: [PATCH 2/3] Change variable names and refactor match file method --- Training/Easy/mime_type.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Training/Easy/mime_type.rb b/Training/Easy/mime_type.rb index 0948156..466ea75 100644 --- a/Training/Easy/mime_type.rb +++ b/Training/Easy/mime_type.rb @@ -18,18 +18,19 @@ def init_associations end def match_file(filename) - splitted_fname = filename.split('.') - result = 'UNKNOWN' - if splitted_fname.size > 1 && filename[-1] != '.' - result = associations.fetch(splitted_fname.last.downcase, 'UNKNOWN') + unknown = 'UNKNOWN' + splitted_filename = filename.split('.') + if splitted_filename.size > 1 && filename[-1] != '.' + result = associations.fetch(splitted_filename.last.downcase, nil) end + result = unknown if result.nil? result end def start q.times do - fname = gets.chomp # One file name per line. - puts match_file(fname) + filename = gets.chomp # One file name per line. + puts match_file(filename) end end end From b091ce241f9c3700a18b860200cc9ee07699978d Mon Sep 17 00:00:00 2001 From: Slavunderkind Date: Tue, 24 Jan 2017 15:32:51 +0200 Subject: [PATCH 3/3] Refactor the code --- Training/Easy/mime_type.rb | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Training/Easy/mime_type.rb b/Training/Easy/mime_type.rb index 466ea75..0ac66d8 100644 --- a/Training/Easy/mime_type.rb +++ b/Training/Easy/mime_type.rb @@ -1,16 +1,16 @@ # Solution for https://www.codingame.com/ide/puzzle/mime-type class MimeType - attr_accessor :n, :q, :associations + attr_reader :elements_count, :files_count, :associations - def initialize - @n = gets.to_i # Number of elements which make up the association table. - @q = gets.to_i # Number Q of file names to be analyzed. + def initialize(elements_count, files_count) + @elements_count = elements_count + @files_count = files_count @associations = init_associations end def init_associations associations = {} - n.times do + elements_count.times do ext, mt = gets.split(' ') # ext: file extension, mt: MIME type. associations[ext.downcase] = mt end @@ -19,21 +19,22 @@ def init_associations def match_file(filename) unknown = 'UNKNOWN' - splitted_filename = filename.split('.') - if splitted_filename.size > 1 && filename[-1] != '.' - result = associations.fetch(splitted_filename.last.downcase, nil) + name_and_extension = filename.split('.') + if name_and_extension.size > 1 && filename[-1] != '.' + result = associations[name_and_extension.last.downcase] end - result = unknown if result.nil? - result + result ||= unknown end def start - q.times do + files_count.times do filename = gets.chomp # One file name per line. puts match_file(filename) end end end -obj = MimeType.new +elements_count = gets.to_i +files_count = gets.to_i +obj = MimeType.new(elements_count, files_count) obj.start